/* { dg-do run } */ extern void abort (void); struct X { int a; struct Y { int b[4]; } b; struct Y c; } m; struct X n; foo (int i) { struct Y *p = (i > 10) ? &m.b : &n.c; p->b[2] = 10; m.b.b[3] = 6; n.c.b[2] = 3; return p->b[2] + n.c.b[2] + m.b.b[3]; } main() { if (foo (3) != 12) abort (); return 0; }