re PR tree-optimization/22506 (ICE with -ftree-vectorize in var_ann, at tree-flow...
authorDorit Nuzman <dorit@il.ibm.com>
Thu, 28 Jul 2005 15:12:49 +0000 (15:12 +0000)
committerDorit Nuzman <dorit@gcc.gnu.org>
Thu, 28 Jul 2005 15:12:49 +0000 (15:12 +0000)
        PR tree-optimization/22506
        * tree-vectorizer.c (update_phi_nodes_for_guard2): Skip loop-closed
        phis whose argument is constant.

From-SVN: r102487

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

index df7cb00b5006b84a76e8431c17f0996575b04622..404286c0b4f40fd7198c2b43226e2f4301115dca 100644 (file)
@@ -1,3 +1,9 @@
+2005-07-28  Dorit Nuzman  <dorit@il.ibm.com>
+
+       PR tree-optimization/22506
+       * tree-vectorizer.c (update_phi_nodes_for_guard2): Skip loop-closed
+       phis whose argument is constant.
+
 2005-07-28  J"orn Rennecke <joern.rennecke@st.com>
 
        PR rtl-optimization/18992
index 89f6ea26c83c3b9b81f91c9d0f5e2e11d778ccbc..c97938347a461de96eda0380970df7bb5d2848cc 100644 (file)
@@ -1,3 +1,8 @@
+2005-07-28  Dorit Nuzman  <dorit@il.ibm.com>
+
+       PR tree-optimization/22506
+       * gcc.dg/vect/ps22506.c: New test.
+
 2005-07-28  Jakub Jelinek  <jakub@redhat.com>
 
        PR target/21149
diff --git a/gcc/testsuite/gcc.dg/vect/pr22506.c b/gcc/testsuite/gcc.dg/vect/pr22506.c
new file mode 100644 (file)
index 0000000..fa22118
--- /dev/null
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_int } */
+
+float x[3];
+
+void foo()
+{
+    int i;
+
+    for (i=0; i<5; ++i) x[i]=0;
+    for (i=0; i<4; ++i) ;
+}
index 4a9bbe8f49c1b10d013166141fbab9d7a462b592..b38156aab1a06dc2a6bda139b8bbd1cf4665549c 100644 (file)
@@ -640,6 +640,10 @@ slpeel_update_phi_nodes_for_guard2 (edge guard_edge, struct loop *loop,
     {
       orig_phi = update_phi;
       orig_def = PHI_ARG_DEF_FROM_EDGE (orig_phi, e);
+      /* This loop-closed-phi actually doesn't represent a use
+         out of the loop - the phi arg is a constant.  */ 
+      if (TREE_CODE (orig_def) != SSA_NAME)
+        continue;
       orig_def_new_name = get_current_def (orig_def);
       arg = NULL_TREE;