http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48696
--- Comment #4 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-04-20 12:11:56 UTC --- (In reply to comment #3) > So something changed between 4.0.3 and 4.0.4? Or maybe a typo? I only have 32bit compilers for both and see, for 4.0.3: show_bug: pushl %ebp movl %esp, %ebp movl 8(%ebp), %edx movl (%edx), %eax andl $-64, %eax movl %eax, (%edx) shrl $6, %eax popl %ebp movzwl %ax, %eax ret and for 4.0.4: show_bug: pushl %ebp movl %esp, %ebp movl 8(%ebp), %eax andb $-64, (%eax) movl (%eax), %eax leave shrl $6, %eax movzwl %ax, %eax ret