struct big | |
{ | |
int data[1000000]; | |
}; | |
struct small | |
{ | |
int data[10]; | |
}; | |
union both | |
{ | |
struct big big; | |
struct small small; | |
}; | |
extern void *calloc (__SIZE_TYPE__, __SIZE_TYPE__); | |
extern void free (void *); | |
static int __attribute__((noinline)) | |
foo (int fail, union both *agg) | |
{ | |
int r; | |
if (fail) | |
r = agg->big.data[999999]; | |
else | |
r = agg->small.data[0]; | |
return r; | |
} | |
int main (int argc, char *argv[]) | |
{ | |
union both *agg = calloc (1, sizeof (struct small)); | |
int r; | |
r = foo ((argc > 2000), agg); | |
free (agg); | |
return r; | |
} |