re PR tree-optimization/60000 (GCC trunk build failure caused by the vectorizer)
authorCong Hou <congh@google.com>
Mon, 3 Feb 2014 18:15:56 +0000 (13:15 -0500)
committerCong Hou <congh@gcc.gnu.org>
Mon, 3 Feb 2014 18:15:56 +0000 (13:15 -0500)
2014-02-03  Cong Hou  <congh@google.com>

PR tree-optimization/60000
* tree-vect-loop.c (vect_transform_loop): Set pattern_def_seq to NULL
if the vectorized statement is a store.  A store statement can only
appear at the end of pattern statements.

2014-02-03  Cong Hou  <congh@google.com>

PR tree-optimization/60000
* g++.dg/vect/pr60000.cc: New test.

From-SVN: r207433

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/vect/pr60000.cc [new file with mode: 0644]
gcc/tree-vect-loop.c

index 5938f54df1e323717c6d9dc273e4565a566b4f57..f3ebc0cb543173c544a84fc18946f92a8eebb72e 100644 (file)
@@ -1,3 +1,10 @@
+2014-02-03  Cong Hou  <congh@google.com>
+
+       PR tree-optimization/60000
+       * tree-vect-loop.c (vect_transform_loop): Set pattern_def_seq to NULL
+       if the vectorized statement is a store.  A store statement can only
+       appear at the end of pattern statements.
+
 2014-02-03  H.J. Lu  <hongjiu.lu@intel.com>
 
        * config/i386/i386.c (flag_opts): Add -mlong-double-128.
index d87b06e62d10876fa0c3b5551783f026d8e32a3a..d896017e5d4559bf4fc232d0dcf4f2c54eef067e 100644 (file)
@@ -1,3 +1,8 @@
+2014-02-03  Cong Hou  <congh@google.com>
+
+       PR tree-optimization/60000
+       * g++.dg/vect/pr60000.cc: New test.
+
 2014-02-03  H.J. Lu  <hongjiu.lu@intel.com>
 
        * gcc.target/i386/long-double-64-1.c: Verify __multf3 isn't used.
diff --git a/gcc/testsuite/g++.dg/vect/pr60000.cc b/gcc/testsuite/g++.dg/vect/pr60000.cc
new file mode 100644 (file)
index 0000000..fe39d6a
--- /dev/null
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-fno-tree-vrp" } */
+
+void foo (bool* a, int* b)
+{
+  for (int i = 0; i < 1000; ++i)
+    {
+      a[i] = i % 2;
+      b[i] = i % 3;
+    }
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
index 2bb9fbdb2f1c38bf45b63fc49c48210349b638f9..eb7ecb60065837d4f0284f0dec97d6a2c68beba6 100644 (file)
@@ -6054,7 +6054,6 @@ vect_transform_loop (loop_vec_info loop_vinfo)
                     the chain.  */
                  gsi_next (&si);
                  vect_remove_stores (GROUP_FIRST_ELEMENT (stmt_info));
-                 continue;
                }
              else
                {
@@ -6064,11 +6063,13 @@ vect_transform_loop (loop_vec_info loop_vinfo)
                  unlink_stmt_vdef (store);
                  gsi_remove (&si, true);
                  release_defs (store);
-                 continue;
                }
-           }
 
-         if (!transform_pattern_stmt && gsi_end_p (pattern_def_si))
+             /* Stores can only appear at the end of pattern statements.  */
+             gcc_assert (!transform_pattern_stmt);
+             pattern_def_seq = NULL;
+           }
+         else if (!transform_pattern_stmt && gsi_end_p (pattern_def_si))
            {
              pattern_def_seq = NULL;
              gsi_next (&si);