re PR debug/71667 (ICE in as_a, at is-a.h:192 w/ -g -O2 -ftree-vectorize)
authorAlan Hayward <alan.hayward@arm.com>
Fri, 8 Jul 2016 08:50:24 +0000 (08:50 +0000)
committerAlan Hayward <alahay01@gcc.gnu.org>
Fri, 8 Jul 2016 08:50:24 +0000 (08:50 +0000)
2016-07-08  Alan Hayward  <alan.hayward@arm.com>

gcc/
PR tree-optimization/71667
* tree-vect-loop.c (vectorizable_live_operation): ignore DEBUG stmts

testsuite/
PR tree-optimization/71667
* gcc.dg/vect/pr71667.c: New

From-SVN: r238160

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

index afd022ed7f347208171d065acae0a55cf249fac1..dc648ca32539ed546e9293d4d622f3b6f8bf5f96 100644 (file)
@@ -1,3 +1,8 @@
+2016-07-08  Alan Hayward  <alan.hayward@arm.com>
+
+       PR tree-optimization/71667
+       * tree-vect-loop.c (vectorizable_live_operation): ignore DEBUG stmts
+
 2016-07-08  Martin Liska  <mliska@suse.cz>
 
        PR middle-end/71606
index 8a4dc1d5b3d088509c6496b3a48a900c24ee53ec..3af679a511f3469354b1d180ea4e031e56968040 100644 (file)
@@ -1,3 +1,8 @@
+2016-07-08  Alan Hayward  <alan.hayward@arm.com>
+
+       PR tree-optimization/71667
+       * gcc.dg/vect/pr71667.c: New
+
 2016-07-08  Martin Liska  <mliska@suse.cz>
 
        * gcc.dg/torture/pr71606.c: New test.
diff --git a/gcc/testsuite/gcc.dg/vect/pr71667.c b/gcc/testsuite/gcc.dg/vect/pr71667.c
new file mode 100644 (file)
index 0000000..e7012ef
--- /dev/null
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-g" } */
+
+unsigned int mu;
+int pt;
+
+void
+qf (void)
+{
+  int gy;
+  long int vz;
+
+  for (;;)
+    {
+      for (gy = 0; gy < 80; ++gy)
+      {
+       vz = mu;
+       ++mu;
+       pt = (vz != 0) && (pt != 0);
+      }
+      while (gy < 81)
+       while (gy < 83)
+         {
+           vz = (vz != 0) ? 0 : mu;
+           ++gy;
+         }
+      pt = vz;
+      ++mu;
+    }
+}
index 63c002e737c64df7fb8c1a5ee603b3c88042d61a..97acf3cb6d3bbfb1c642c48460157c73a5bb4b8d 100644 (file)
@@ -6354,11 +6354,12 @@ vectorizable_live_operation (gimple *stmt,
        : gimple_get_lhs (stmt);
   lhs_type = TREE_TYPE (lhs);
 
-  /* Find all uses of STMT outside the loop - there should be exactly one.  */
+  /* Find all uses of STMT outside the loop - there should be at least one.  */
   auto_vec<gimple *, 4> worklist;
   FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, lhs)
-    if (!flow_bb_inside_loop_p (loop, gimple_bb (use_stmt)))
-       worklist.safe_push (use_stmt);
+    if (!flow_bb_inside_loop_p (loop, gimple_bb (use_stmt))
+       && !is_gimple_debug (use_stmt))
+      worklist.safe_push (use_stmt);
   gcc_assert (worklist.length () >= 1);
 
   bitsize = TYPE_SIZE (TREE_TYPE (vectype));