aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2019-10-04 09:18:26 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2019-10-04 09:18:26 +0000
commit48528394eafa9d1db9f956570f910c76d429a3e5 (patch)
treef1938b568bd4faf791d2f36c86e03b15523413b0
parent3d203d01760ed8e5a81a9406fee67c139d116ad0 (diff)
downloadgcc-48528394eafa9d1db9f956570f910c76d429a3e5.zip
gcc-48528394eafa9d1db9f956570f910c76d429a3e5.tar.gz
gcc-48528394eafa9d1db9f956570f910c76d429a3e5.tar.bz2
re PR target/91982 (gcc.target/aarch64/sve/clastb_*.c tests failing with segfault)
2019-10-04 Richard Biener <rguenther@suse.de> PR tree-optimization/91982 * tree-vect-loop.c (vectorizable_live_operation): Also guard against EXTRACT_LAST_REDUCTION. * tree-vect-stmts.c (vect_transform_stmt): Likewise. From-SVN: r276566
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/tree-vect-loop.c5
-rw-r--r--gcc/tree-vect-stmts.c3
3 files changed, 14 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6e4f145..9a303c5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2019-10-04 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/91982
+ * tree-vect-loop.c (vectorizable_live_operation): Also guard
+ against EXTRACT_LAST_REDUCTION.
+ * tree-vect-stmts.c (vect_transform_stmt): Likewise.
+
2019-10-04 Aldy Hernandez <aldyh@redhat.com>
(value_range_from_overflowed_bounds): Rename from
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 31e7457..3db4a5c 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -7901,7 +7901,10 @@ vectorizable_live_operation (stmt_vec_info stmt_info,
return true;
if (STMT_VINFO_DEF_TYPE (stmt_info) == vect_reduction_def)
{
- if (STMT_VINFO_REDUC_TYPE (stmt_info) == FOLD_LEFT_REDUCTION)
+ if (STMT_VINFO_REDUC_TYPE (stmt_info) == FOLD_LEFT_REDUCTION
+ || (STMT_VINFO_REDUC_TYPE (stmt_info) == COND_REDUCTION
+ && (STMT_VINFO_VEC_REDUCTION_TYPE (stmt_info)
+ == EXTRACT_LAST_REDUCTION)))
return true;
if (slp_node)
{
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index f997ad2..cac7410 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -10897,6 +10897,9 @@ vect_transform_stmt (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi,
stmt_vec_info orig_stmt_info = vect_orig_stmt (stmt_info);
if (!slp_node && STMT_VINFO_REDUC_DEF (orig_stmt_info)
&& STMT_VINFO_REDUC_TYPE (orig_stmt_info) != FOLD_LEFT_REDUCTION
+ && (STMT_VINFO_REDUC_TYPE (orig_stmt_info) != COND_REDUCTION
+ || (STMT_VINFO_VEC_REDUCTION_TYPE (orig_stmt_info)
+ != EXTRACT_LAST_REDUCTION))
&& is_a <gphi *> (STMT_VINFO_REDUC_DEF (orig_stmt_info)->stmt))
{
gphi *phi = as_a <gphi *> (STMT_VINFO_REDUC_DEF (orig_stmt_info)->stmt);