http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53110
--- Comment #8 from peterz at infradead dot org 2012-04-25 13:15:56 UTC --- Jakub's patch seems to improve the situation: --- gcc-bug-4.7.s 2012-04-25 14:58:21.494815266 +0200 +++ gcc-bug-4.7+.s 2012-04-25 15:14:13.784243427 +0200 @@ -22,12 +22,12 @@ .cfi_startproc movq %rdi, %r8 movq %rsi, %r9 - andl $4294967295, %esi + movl %esi, %esi shrq $32, %r9 shrq $32, %r8 movq %rsi, %rdx imulq %r8, %rdx - andl $4294967295, %edi + movl %edi, %edi movq %r9, %rax imulq %rdi, %rax imulq %r9, %r8