1struct A { int a; char b[]; }; 2union B { struct A a; char b[sizeof (struct A) + 31]; }; 3union B b = { { 1, "123456789012345678901234567890" } }; 4union B c = { { 2, "123456789012345678901234567890" } }; 5 6__attribute__((noinline, noclone)) void 7foo (int *x[2]) 8{ 9 x[0] = &b.a.a; 10 x[1] = &c.a.a; 11} 12 13int 14main () 15{ 16 int *x[2]; 17 foo (x); 18 if (*x[0] != 1 || *x[1] != 2) 19 __builtin_abort (); 20 return 0; 21} 22