http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53110
Richard Guenther <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|c |target --- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-04-25 11:03:55 UTC --- movq %rdi, %r8 movq %rsi, %rcx andl $4294967295, %edi I'm not sure it's pointless - %rdi contains a 64bit value and we want to access the zero-extended %rdi later: imulq %rdi, %rcx it could have used a move to another register which implicitely zero-extends or maybe a zero-extension on the same register (if that exists). The and is only 3 bytes in size. A mov %edi, %edi is 2 bytes but I'm not sure that implicitely zero-extends.