aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-loop.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2020-11-04 11:20:17 +0100
committerRichard Biener <rguenther@suse.de>2020-11-04 12:41:14 +0100
commit1e9f339d946b8296e3785bec77e03d71b487d689 (patch)
treec32fb9049dc664ee82ba8ee144996f8d6bcf05d2 /gcc/tree-vect-loop.c
parent3e190757fa332d327bee27495f37beb01155cfab (diff)
downloadgcc-1e9f339d946b8296e3785bec77e03d71b487d689.zip
gcc-1e9f339d946b8296e3785bec77e03d71b487d689.tar.gz
gcc-1e9f339d946b8296e3785bec77e03d71b487d689.tar.bz2
tree-optimization/97709 - set abnormal flag when vectorizing live lanes
This properly sets the abnormal flag when vectorizing live lanes when the original scalar was live across an abnormal edge. 2020-11-04 Richard Biener <rguenther@suse.de> PR tree-optimization/97709 * tree-vect-loop.c (vectorizable_live_operation): Set SSA_NAME_OCCURS_IN_ABNORMAL_PHI when necessary. * gcc.dg/vect/bb-slp-pr97709.c: New testcase.
Diffstat (limited to 'gcc/tree-vect-loop.c')
-rw-r--r--gcc/tree-vect-loop.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index c09aa39..6cb2286 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -8568,6 +8568,9 @@ vectorizable_live_operation (vec_info *vinfo,
gimple_seq stmts = NULL;
new_tree = force_gimple_operand (fold_convert (lhs_type, new_tree),
&stmts, true, NULL_TREE);
+ if (TREE_CODE (new_tree) == SSA_NAME
+ && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (lhs))
+ SSA_NAME_OCCURS_IN_ABNORMAL_PHI (new_tree) = 1;
if (is_a <gphi *> (vec_stmt))
{
gimple_stmt_iterator si = gsi_after_labels (gimple_bb (vec_stmt));