https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106081
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization CC| |rguenth at gcc dot gnu.org Blocks| |53947 --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- Might be a bit easier case than PR103999 since the accumulation is in 'double' here. In fact it should already work, but we fail to SLP the reduction because t.c:14:24: missed: Build SLP failed: not grouped load _1 = *k_50; and non-SLP as well: t.c:14:24: note: ==> examining statement: _1 = *k_50; t.c:14:24: missed: multiple types with negative step. t.c:14:24: missed: not falling back to elementwise accesses t.c:16:30: missed: not vectorized: relevant stmt not supported: _1 = *k_50; t.c:14:24: missed: bad operation or unsupported loop bound. changing k-- to k++ lets us vectorize the code but in an awkward way (SLP still fails on us so we get interleaving). So the first thing to fix is SLP of non-grouped loads where I think we also have a bug for. Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53947 [Bug 53947] [meta-bug] vectorizer missed-optimizations