http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339
--- Comment #2 from Steven Bosscher <steven at gcc dot gnu.org> 2013-02-15 10:00:13 UTC --- The "unbreakable" insns 12 "xmm2:DF=xmm2:DF+xmm0:DF" is created by regmove. .ce3 dump: 2: r64:DF=xmm0:DF 8: r66:DF=xmm2:DF 12: r67:DF=r66:DF+r64:DF 17: xmm0:DF=r67:DF 20: use xmm0:DF .regmove dump: Could fix operand 1 of insn 12 matching operand 0. 2: r64:DF=xmm0:DF 8: r67:DF=xmm2:DF 12: r67:DF=r67:DF+r64:DF 17: xmm0:DF=r67:DF 20: use xmm0:DF With -fno-regmove: addsd %xmm2, %xmm0 ret