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