https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97832
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- So for example we'd like to vectorize with SLP when reassociation is permitted (thus with -Ofast for example): double a[1024], b[1024], c[1024]; void foo() { for (int i = 0; i < 256; ++i) { a[2*i] = 1. - a[2*i] + b[2*i]; a[2*i+1] = a[2*i+1] + b[2*i+1] + 1.; } } it again works when written as follows and with -fno-tree-reassoc double a[1024], b[1024], c[1024]; void foo() { for (int i = 0; i < 256; ++i) { a[2*i] = 1. - a[2*i] + b[2*i]; a[2*i+1] = 1 + a[2*i+1] + b[2*i+1]; } }