aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-10-21 13:43:19 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2019-10-21 13:43:19 +0000
commit53b15ca96116544a7a3ca8bc5f4e1649b74f3d45 (patch)
treea911d7c9420bd1042ffb330240080931f1bf5067
parentaa7710cb6c2f019760fcafd37a8ab99ac897fa2b (diff)
downloadgcc-53b15ca96116544a7a3ca8bc5f4e1649b74f3d45.zip
gcc-53b15ca96116544a7a3ca8bc5f4e1649b74f3d45.tar.gz
gcc-53b15ca96116544a7a3ca8bc5f4e1649b74f3d45.tar.bz2
re PR tree-optimization/92162 (ICE in vect_create_epilog_for_reduction, at tree-vect-loop.c:4252)
2019-10-21 Richard Biener <rguenther@suse.de> PR tree-optimization/92162 * tree-vect-loop.c (vect_create_epilog_for_reduction): Lookup STMT_VINFO_REDUC_IDX in reduc_info. * tree-vect-stmts.c (vectorizable_condition): Likewise. * gcc.dg/pr92162.c: New testcase. From-SVN: r277261
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr92162.c10
-rw-r--r--gcc/tree-vect-loop.c4
-rw-r--r--gcc/tree-vect-stmts.c2
5 files changed, 25 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4139f7f..8c20cb8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2019-10-21 Richard Biener <rguenther@suse.de>
+ PR tree-optimization/92162
+ * tree-vect-loop.c (vect_create_epilog_for_reduction): Lookup
+ STMT_VINFO_REDUC_IDX in reduc_info.
+ * tree-vect-stmts.c (vectorizable_condition): Likewise.
+
+2019-10-21 Richard Biener <rguenther@suse.de>
+
* tree-vectorizer.h (_slp_tree::ops): New member.
(SLP_TREE_SCALAR_OPS): New.
(vect_get_slp_defs): Adjust prototype.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d958e64..0259236 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2019-10-21 Richard Biener <rguenther@suse.de>
+ PR tree-optimization/92162
+ * gcc.dg/pr92162.c: New testcase.
+
+2019-10-21 Richard Biener <rguenther@suse.de>
+
PR tree-optimization/92161
* gfortran.dg/pr92161.f: New testcase.
diff --git a/gcc/testsuite/gcc.dg/pr92162.c b/gcc/testsuite/gcc.dg/pr92162.c
new file mode 100644
index 0000000..ed82595
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr92162.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-Ofast" } */
+
+short int s8;
+
+void __attribute__ ((simd))
+gn (void)
+{
+ s8 = 0;
+}
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 9efb797..a4c9f2f 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -4259,9 +4259,9 @@ vect_create_epilog_for_reduction (stmt_vec_info stmt_info,
(CCOMPARE). The then and else values mirror the main VEC_COND_EXPR:
the reduction phi corresponds to NEW_PHI_TREE and the new values
correspond to INDEX_BEFORE_INCR. */
- gcc_assert (STMT_VINFO_REDUC_IDX (stmt_info) >= 1);
+ gcc_assert (STMT_VINFO_REDUC_IDX (reduc_info) >= 1);
tree index_cond_expr;
- if (STMT_VINFO_REDUC_IDX (stmt_info) == 2)
+ if (STMT_VINFO_REDUC_IDX (reduc_info) == 2)
index_cond_expr = build3 (VEC_COND_EXPR, cr_index_vector_type,
ccompare, indx_before_incr, new_phi_tree);
else
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index 4c5d33c..7f6100e 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -9818,7 +9818,7 @@ vectorizable_condition (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi,
return false;
reduc_info = info_for_reduction (stmt_info);
reduction_type = STMT_VINFO_REDUC_TYPE (reduc_info);
- reduc_index = STMT_VINFO_REDUC_IDX (stmt_info);
+ reduc_index = STMT_VINFO_REDUC_IDX (reduc_info);
gcc_assert (reduction_type != EXTRACT_LAST_REDUCTION
|| reduc_index != -1);
}