1struct VEC_char_base 2{ 3 unsigned num; 4 unsigned alloc; 5 union { 6 short vec[1]; 7 struct { 8 int i; 9 int j; 10 int k; 11 } a; 12 } u; 13}; 14 15short __attribute__((noinline)) 16foo (struct VEC_char_base *p, int i) 17{ 18 short *q; 19 p->u.vec[i] = 0; 20 q = &p->u.vec[16]; 21 *q = 1; 22 return p->u.vec[i]; 23} 24 25extern void abort (void); 26extern void *malloc (__SIZE_TYPE__); 27 28int 29main() 30{ 31 struct VEC_char_base *p = malloc (sizeof (struct VEC_char_base) + 256); 32 if (foo (p, 16) != 1) 33 abort (); 34 return 0; 35} 36