Because we disable the cost model, targets with variable-length vectors can end up vectorising the store to a[0..7] on its own. With the cost model we do something sensible.
Tested on aarch64-linux-gnu (with and without SVE), arm-linux-gnueabihf and x86_64-linux-gnu. Pushed as obvious. Richard gcc/testsuite/ * gcc.dg/vect/bb-slp-subgroups-3.c: XFAIL for variable-length vectors. --- gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c b/gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c index fe36f90bb90..e27f956d7b8 100644 --- a/gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c @@ -38,4 +38,7 @@ main (int argc, char **argv) } /* { dg-final { scan-tree-dump-times "Basic block will be vectorized using SLP" 1 "slp2" } } */ -/* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" } } */ +/* Because we disable the cost model, targets with variable-length + vectors can end up vectorizing the store to a[0..7] on its own. + With the cost model we do something sensible. */ +/* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" { xfail vect_variable_length } } } */