struct A { int a; char b[]; }; | |
union B { struct A a; char b[sizeof (struct A) + 31]; }; | |
union B b = { { 1, "123456789012345678901234567890" } }; | |
union B c = { { 2, "123456789012345678901234567890" } }; | |
__attribute__((noinline, noclone)) void | |
foo (int *x[2]) | |
{ | |
x[0] = &b.a.a; | |
x[1] = &c.a.a; | |
} | |
int | |
main () | |
{ | |
int *x[2]; | |
foo (x); | |
if (*x[0] != 1 || *x[1] != 2) | |
__builtin_abort (); | |
return 0; | |
} |