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