https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110381
--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> --- C testcase: struct FOO { double a; double b; double c; }; double __attribute__((noipa)) sum_8_foos(const struct FOO* foos) { double sum = 0; for (int i = 0; i < 8; ++i) { struct FOO foo = foos[i]; sum += foo.c; sum += foo.b; sum += foo.a; } return sum; } int main() { struct FOO foos[8]; __builtin_memset (foos, 0, sizeof (foos)); foos[0].b = 5; if (sum_8_foos (foos) != 5) __builtin_abort (); return 0; }