| struct VEC_char_base | |
| { | |
| unsigned num; | |
| unsigned alloc; | |
| union { | |
| short vec[1]; | |
| struct { | |
| int i; | |
| int j; | |
| int k; | |
| } a; | |
| } u; | |
| }; | |
| short __attribute__((noinline)) | |
| foo (struct VEC_char_base *p, int i) | |
| { | |
| short *q; | |
| p->u.vec[i] = 0; | |
| q = &p->u.vec[16]; | |
| *q = 1; | |
| return p->u.vec[i]; | |
| } | |
| extern void abort (void); | |
| extern void *malloc (__SIZE_TYPE__); | |
| int | |
| main() | |
| { | |
| struct VEC_char_base *p = malloc (sizeof (struct VEC_char_base) + 256); | |
| if (foo (p, 16) != 1) | |
| abort (); | |
| return 0; | |
| } |