http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53110
Markus Trippelsdorf <markus at trippelsdorf dot de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |markus at trippelsdorf dot | |de --- Comment #3 from Markus Trippelsdorf <markus at trippelsdorf dot de> 2012-04-25 11:23:59 UTC --- For comparison this is what clang generates: .file "gcc-bug.c" .text .globl mult_u128 .align 16, 0x90 .type mult_u128,@function mult_u128: # @mult_u128 .cfi_startproc # BB#0: movabsq $-4294967296, %rdx # imm = 0xFFFFFFFF00000000 andq %rdi, %rdx movl %esi, %ecx movq %rdi, %rax shrq $32, %rax shrq $32, %rsi imulq %rsi, %rax imulq %rcx, %rdx imull %edi, %esi shlq $32, %rsi addq %rdx, %rsi adcq $0, %rax movl %edi, %edx imulq %rcx, %rdx addq %rsi, %rdx adcq $0, %rax ret .Ltmp0: .size mult_u128, .Ltmp0-mult_u128 .cfi_endproc .section ".note.GNU-stack","",@progbits