tree-optimization/97753 - fix SLP induction vect

This fixes updating of the step vectors when filling up to group_size.

2020-11-09  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/97753
	* tree-vect-loop.c (vectorizable_induction): Fill vec_steps
	when CSEing inside the group.

	* gcc.dg/vect/pr97753.c: New testcase.
This commit is contained in:
Richard Biener 2020-11-09 14:03:14 +01:00
parent ec735bc764
commit f5761c318a
2 changed files with 15 additions and 2 deletions

View file

@ -0,0 +1,10 @@
/* { dg-do compile } */
/* { dg-additional-options "-O3" } */
long a[6];
void d(int c)
{
for (; c; c++)
for (int b = 0; b < 8; b++)
((char *)&a[c])[b] = c;
}

View file

@ -8068,8 +8068,11 @@ vectorizable_induction (loop_vec_info loop_vinfo,
nivs = least_common_multiple (group_size,
const_nunits) / const_nunits;
for (; ivn < nivs; ++ivn)
SLP_TREE_VEC_STMTS (slp_node)
.quick_push (SLP_TREE_VEC_STMTS (slp_node)[0]);
{
SLP_TREE_VEC_STMTS (slp_node)
.quick_push (SLP_TREE_VEC_STMTS (slp_node)[0]);
vec_steps.safe_push (vec_steps[0]);
}
}
/* Re-use IVs when we can. We are generating further vector