re PR tree-optimization/92742 (ICE in info_for_reduction, at tree-vect-loop.c:4367)
authorRichard Biener <rguenther@suse.de>
Mon, 2 Dec 2019 10:50:45 +0000 (10:50 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 2 Dec 2019 10:50:45 +0000 (10:50 +0000)
2019-12-02  Richard Biener  <rguenther@suse.de>

PR tree-optimization/92742
* tree-vect-loop.c (vect_fixup_reduc_chain): Do not
touch the def-type but verify it is consistent with the
original stmts.

* gcc.dg/torture/pr92742.c: New testcase.

From-SVN: r278896

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

index 9b3242115540412484060c829b6aea84bce33775..1d342f4cf1076b8bc1908cca387912377aa13de2 100644 (file)
@@ -1,3 +1,10 @@
+2019-12-02  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/92742
+       * tree-vect-loop.c (vect_fixup_reduc_chain): Do not
+       touch the def-type but verify it is consistent with the
+       original stmts.
+
 2019-12-02  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/92712
index 12abe735bbf855ace983d383e07afedb7d342e7b..03fb4d9ed80066e69ccdc25739e00444cc770efa 100644 (file)
@@ -1,3 +1,8 @@
+2019-12-02  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/92742
+       * gcc.dg/torture/pr92742.c: New testcase.
+
 2019-12-02  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/92712
diff --git a/gcc/testsuite/gcc.dg/torture/pr92742.c b/gcc/testsuite/gcc.dg/torture/pr92742.c
new file mode 100644 (file)
index 0000000..59e74c0
--- /dev/null
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-additional-options "-ftree-vectorize" } */
+
+unsigned int qw;
+
+int
+rs (int iq, int wg)
+{
+  for (qw = 0; qw < 2; ++qw)
+    {
+    }
+
+  while (iq < 1)
+    {
+      wg *= qw * 2;
+      ++iq;
+    }
+
+  return wg;
+}
index 77c5a9816e2fa6b3592575daa93984e3f93236e3..83b0e0b8ce9c6c0979e64448ed9118587f0ae7a9 100644 (file)
@@ -643,6 +643,8 @@ vect_fixup_reduc_chain (stmt_vec_info stmt_info)
   do
     {
       stmtp = STMT_VINFO_RELATED_STMT (stmt_info);
+      gcc_checking_assert (STMT_VINFO_DEF_TYPE (stmtp)
+                          == STMT_VINFO_DEF_TYPE (stmt_info));
       REDUC_GROUP_FIRST_ELEMENT (stmtp) = firstp;
       stmt_info = REDUC_GROUP_NEXT_ELEMENT (stmt_info);
       if (stmt_info)
@@ -650,7 +652,6 @@ vect_fixup_reduc_chain (stmt_vec_info stmt_info)
          = STMT_VINFO_RELATED_STMT (stmt_info);
     }
   while (stmt_info);
-  STMT_VINFO_DEF_TYPE (stmtp) = vect_reduction_def;
 }
 
 /* Fixup scalar cycles that now have their stmts detected as patterns.  */