mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-25 05:40:26 +08:00
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.
This commit is contained in:
parent
3e190757fa
commit
1e9f339d94
26
gcc/testsuite/gcc.dg/vect/bb-slp-pr97709.c
Normal file
26
gcc/testsuite/gcc.dg/vect/bb-slp-pr97709.c
Normal file
@ -0,0 +1,26 @@
|
||||
/* { dg-do compile } */
|
||||
|
||||
int a;
|
||||
struct b {
|
||||
int c;
|
||||
int d;
|
||||
};
|
||||
void k (struct b);
|
||||
struct b
|
||||
e()
|
||||
{
|
||||
void *f[] = {&&g, &&h, &&i, &&j};
|
||||
int d, c;
|
||||
j:
|
||||
goto *a;
|
||||
g:
|
||||
d = 0;
|
||||
h:
|
||||
c = 1;
|
||||
goto *a;
|
||||
i:
|
||||
{
|
||||
struct b b = {c, d};
|
||||
k(b);
|
||||
}
|
||||
}
|
@ -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));
|
||||
|
Loading…
x
Reference in New Issue
Block a user