diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 552082088f4..69d99be3aa8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2008-09-07 Richard Guenther + Ira Rosen + + PR tree-optimization/36630 + * tree-vect-transform.c (vect_update_ivs_after_vectorizer): + Call STRIP_NOPS before calling evolution_part_in_loop_num. + 2008-09-07 Dorit Nuzman Ira Rosen diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7d83cbbbe97..b05e0c77c2f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2008-09-07 Richard Guenther + Ira Rosen + + PR tree-optimization/36630 + * gcc.dg/vect/pr36630.c: New test. + 2008-09-07 Daniel Kraft * gfortran.dg/stfunc_6.f90: Extended testcase to include more tests diff --git a/gcc/testsuite/gcc.dg/vect/pr36630.c b/gcc/testsuite/gcc.dg/vect/pr36630.c new file mode 100644 index 00000000000..9d85afffb20 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr36630.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target vect_int } */ + +void +foo (unsigned char *x, short y) +{ + short i; + + i = 2; + while (i < y) + { + x[i - 1] = x[i]; + i = i + 1; + } +} +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c index 3a77c5bab1c..17f3217160f 100644 --- a/gcc/tree-vect-transform.c +++ b/gcc/tree-vect-transform.c @@ -7332,6 +7332,7 @@ vect_update_ivs_after_vectorizer (loop_vec_info loop_vinfo, tree niters, access_fn = analyze_scalar_evolution (loop, PHI_RESULT (phi)); gcc_assert (access_fn); + STRIP_NOPS (access_fn); evolution_part = unshare_expr (evolution_part_in_loop_num (access_fn, loop->num)); gcc_assert (evolution_part != NULL_TREE);