re PR tree-optimization/36630 (ICE in vect_update_ivs_after_vectorizer)
authorRichard Guenther <rguenther@suse.de>
Sun, 7 Sep 2008 10:05:37 +0000 (10:05 +0000)
committerIra Rosen <irar@gcc.gnu.org>
Sun, 7 Sep 2008 10:05:37 +0000 (10:05 +0000)
PR tree-optimization/36630
* tree-vect-transform.c (vect_update_ivs_after_vectorizer):
Call STRIP_NOPS before calling evolution_part_in_loop_num.

Co-Authored-By: Ira Rosen <irar@il.ibm.com>
From-SVN: r140085

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/vect/pr36630.c [new file with mode: 0644]
gcc/tree-vect-transform.c

index 5520820..69d99be 100644 (file)
@@ -1,3 +1,10 @@
+2008-09-07  Richard Guenther  <rguenther@suse.de>
+            Ira Rosen  <irar@il.ibm.com>
+
+       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  <dorit@il.ibm.com>
             Ira Rosen  <irar@il.ibm.com>
 
index 7d83cbb..b05e0c7 100644 (file)
@@ -1,3 +1,9 @@
+2008-09-07  Richard Guenther  <rguenther@suse.de>
+            Ira Rosen  <irar@il.ibm.com>
+
+       PR tree-optimization/36630
+       * gcc.dg/vect/pr36630.c: New test.
+
 2008-09-07  Daniel Kraft  <d@domob.eu>
 
        * 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 (file)
index 0000000..9d85aff
--- /dev/null
@@ -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" } } */
index 3a77c5b..17f3217 100644 (file)
@@ -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);