http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51821
Richard Guenther <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |wrong-code Component|c |target --- Comment #2 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-01-11 11:28:08 UTC --- I believe this is a target issue. We produce test: .LFB0: .cfi_startproc movl 4(%esp), %ecx movl $-1, %eax xorl %edx, %edx sall %cl, %eax testb $32, %cl cmovne %eax, %edx cmovne %edx, %eax ret but as this is a SHIFT_COUNT_TRUNCATED target the sall instruction does nothing, so shifting DImode by 32 is not implemented correctly on i?86 (ix86_split_ashl).