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