| struct S { char c1, c2, c3, c4; } __attribute__((aligned(4))); | |
| static char bar (char **p) __attribute__((noclone, noinline)); | |
| static struct S foo (void) __attribute__((noclone, noinline)); | |
| int i; | |
| static char | |
| bar (char **p) | |
| { | |
| i = 1; | |
| return 0; | |
| } | |
| static struct S | |
| foo (void) | |
| { | |
| struct S ret; | |
| char r, s, c1, c2; | |
| char *p = &r; | |
| s = bar (&p); | |
| if (s) | |
| c2 = *p; | |
| c1 = 0; | |
| ret.c1 = c1; | |
| ret.c2 = c2; | |
| return ret; | |
| } | |
| int main (void) | |
| { | |
| struct S s = foo (); | |
| if (s.c1 != 0) | |
| __builtin_abort (); | |
| return 0; | |
| } |