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; | |
} |