Jie Zhang wrote: > typedef unsigned short u16; > typedef unsigned int u32; > > u32 a(volatile u16* off) { > return *off; > }
> mingw32-gcc-4.3.0.exe -c -O2 -fomit-frame-pointer -mtune=core2 test.c > > it produces: > 00000000 <_a>: > 0: 8b 44 24 04 mov 0x4(%esp),%eax > 4: 0f b7 00 movzwl (%eax),%eax > 7: 0f b7 c0 movzwl %ax,%eax <== The redundant insn > a: c3 ret How does it look at the RTL level? I wonder if this situation is similar to the one being discussed in the other current thread "Which optimizer should remove redundant subreg of sign_extension?" cheers, DaveK