aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-12-02 10:50:45 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2019-12-02 10:50:45 +0000
commit2679730bab0202e7591adc6ac0ea1347b8954983 (patch)
treec3aad6aba27d6cf0aab6744a87c069ec79ce806b
parenta213ab38560f0b95ec318b2a4795e66cc0518848 (diff)
downloadgcc-2679730bab0202e7591adc6ac0ea1347b8954983.zip
gcc-2679730bab0202e7591adc6ac0ea1347b8954983.tar.gz
gcc-2679730bab0202e7591adc6ac0ea1347b8954983.tar.bz2
re PR tree-optimization/92742 (ICE in info_for_reduction, at tree-vect-loop.c:4367)
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
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr92742.c20
-rw-r--r--gcc/tree-vect-loop.c3
4 files changed, 34 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9b32421..1d342f4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 12abe73..03fb4d9 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..59e74c0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr92742.c
@@ -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;
+}
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 77c5a98..83b0e0b 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -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. */