------- Comment #6 from etienne_lorrain at yahoo dot fr 2008-11-21 16:10 ------- By trying to declare: volatile union U u; In your Testcase without the unnecessary enum, the "u = def;" is compiled as: movl $0, u
movl u, %eax andl $-16, %eax orl $6, %eax movl %eax, u movl u, %eax andb $15, %al orl $64, %eax movl %eax, u movl u, %eax andb $240, %ah orb $2, %ah movl %eax, u movl u, %eax andb $15, %ah orb $176, %ah movl %eax, u movl u, %eax andl $-983041, %eax orl $196608, %eax movl %eax, u movl u, %eax andl $-15728641, %eax orl $5242880, %eax movl %eax, u movl u, %eax andl $268435455, %eax orl $1342177280, %eax movl %eax, u By gcc version 4.3.2 (Debian 4.3.2-1) on i486-linux-gnu at -O2. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37135