[PATCH] Fix PR92742

Richard Biener rguenther@suse.de
Mon Dec 2 10:49:00 GMT 2019


Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.

Richard.

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.

Index: gcc/tree-vect-loop.c
===================================================================
--- gcc/tree-vect-loop.c	(revision 278893)
+++ gcc/tree-vect-loop.c	(working copy)
@@ -643,6 +643,8 @@ vect_fixup_reduc_chain (stmt_vec_info st
   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 st
 	  = 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.  */
Index: gcc/testsuite/gcc.dg/torture/pr92742.c
===================================================================
--- gcc/testsuite/gcc.dg/torture/pr92742.c	(nonexistent)
+++ gcc/testsuite/gcc.dg/torture/pr92742.c	(working copy)
@@ -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;
+}



More information about the Gcc-patches mailing list