| struct X { | |
| struct Y { | |
| struct YY { | |
| struct Z { | |
| int i; | |
| } c; | |
| } bb; | |
| } b; | |
| } a; | |
| int __attribute__((noinline, noclone)) | |
| foo (struct Z *p) | |
| { | |
| int i = p->i; | |
| a.b = (struct Y){}; | |
| return p->i + i; | |
| } | |
| extern void abort (void); | |
| int main() | |
| { | |
| a.b.bb.c.i = 1; | |
| if (foo (&a.b.bb.c) != 1) | |
| abort (); | |
| return 0; | |
| } |