1/* { dg-do compile } */ 2 3union u_u16 4{ 5 unsigned short v; 6 struct 7 { 8 unsigned char lo8, hi8; 9 } __attribute__ ((__may_alias__)) u; 10} __attribute__ ((__may_alias__)); 11union u_u32 12{ 13 unsigned int v; 14 struct 15 { 16 u_u16 lo16, hi16; 17 } u; 18} __attribute__ ((__may_alias__)); 19union u_u64 20{ 21 struct 22 { 23 u_u32 lo32, hi32; 24 } u; 25}; 26struct Record 27{ 28}; 29long long 30UnpackFullKey (Record & rec, const char *&p) 31{ 32 long long c64 = 0; 33 (*(u_u16 *) & (*(u_u32 *) & ( *(u_u64*)&c64).u.lo32.v).u.lo16.v).u.hi8 = 1; 34 return c64; 35} 36 37