------- Comment #11 from pinskia at gcc dot gnu dot org 2009-01-16 22:11 ------- Semi small testcase: union u_u16 { unsigned short v; struct { unsigned char lo8, hi8; } __attribute__ ((__may_alias__)) u; } __attribute__ ((__may_alias__)); union u_u32 { unsigned int v; struct { u_u16 lo16, hi16; } u; } __attribute__ ((__may_alias__)); union u_u64 { struct { u_u32 lo32, hi32; } u; }; struct Record { }; long long UnpackFullKey (Record & rec, const char *&p) { long long c64 = 0; (*(u_u16 *) & (*(u_u32 *) & ( *(u_u64*)&c64).u.lo32.v).u.lo16.v).u.hi8 = 1; return c64; }
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38745