https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98544
--- Comment #18 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Richard Biener from comment #17) > /* { dg-do run } */ > > double a[4], b[2]; > > void __attribute__((noipa)) > foo () > { > double a0 = a[0]; > double a1 = a[1]; > double a2 = a[2]; > double a3 = a[3]; > b[0] = a1 - a3; > b[1] = a0 + a2; > } > > int main() > { > a[0] = 1.; > a[1] = 2.; > a[2] = 3.; > a[3] = 4.; > foo (); > if (b[0] != -2 || b[1] != 4) > __builtin_abort (); > return 0; > } err /* { dg-do run } */ double a[2], b[2], c[2], d[2]; void __attribute__((noipa)) foo() { double a0 = a[0]; double a1 = a[1]; double b0 = b[0]; double b1 = b[1]; double c0 = c[0]; double c1 = c[1]; double tem1 = a1 - b1; double tem2 = a0 + b0; d[0] = tem1 * c1; d[1] = tem2 * c0; } int main() { a[0] = 1.; a[1] = 2.; b[0] = 3.; b[1] = 4.; c[0] = 2.; c[1] = 3.; foo (); if (d[0] != -6. || d[1] != 8.) __builtin_abort (); return 0; }