1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
/* { dg-do run } */ struct X { int i; int a[4]; } m; int a[4]; int __attribute__((noinline)) foo(int b) { int (*p)[4] = b ? &a : &m.a; a[3] = 0; (*p)[3] = 1; return (*p)[3] + (*p)[2] + (*p)[1] + a[0] + a[3]; } extern void abort (void); int main() { int i; for (i = 0; i < 4; ++i) a[i] = 0; if (foo(1) != 2) abort (); return 0; }