https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110428
Bug ID: 110428 Summary: missed CSE with VLA vectors Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: rguenth at gcc dot gnu.org Target Milestone: --- #include <stdint.h> void __attribute__((noinline,noclone)) foo (uint16_t *out, uint16_t *res) { int mask[] = { 0, 1, 1, 1, 1, 1, 1, 1 }; int i; for (i = 0; i < 8; ++i) { if (mask[i]) out[i] = 33; } uint16_t o0 = out[0]; uint16_t o7 = out[3]; uint16_t o14 = out[6]; uint16_t o15 = out[7]; res[0] = o0; res[2] = o7; res[4] = o14; res[6] = o15; } With -march=armv9.3-a -O3 -g0 -fno-vect-cost-model we fail to CSE the out[] loads after vectorization.