https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77648
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- struct S { int *p; int *q; }; int **__attribute__((noinline,noclone,pure)) foo (struct S *s) { return &s->q; } int main() { struct S s; int i = 1, j = 2; int **x; s.p = &i; s.q = &j; x = foo (&s); **x = 7; if (j != 7) __builtin_abort (); return 0; }