[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