https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47582
Tony Poppleton <tony.poppleton at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2017-7-22 Known to fail| |5.1.1, 6.3.1, 7.1.1 --- Comment #4 from Tony Poppleton <tony.poppleton at gmail dot com> --- Retesting this with gcc 7.1.1 20170622 (Red Hat 7.1.1-3) shows that the mov's are still not being combined, even though dependency #23684 is marked as fixed: The DM1 branch produces: .LFB0: .cfi_startproc movss b(%rip), %xmm0 xorl %eax, %eax movss %xmm0, a(%rip) movss b+4(%rip), %xmm0 movss %xmm0, a+4(%rip) movss b+8(%rip), %xmm0 movss %xmm0, a+8(%rip) movss b+12(%rip), %xmm0 movss %xmm0, a+12(%rip) movss b+16(%rip), %xmm0 movss %xmm0, a+16(%rip) ret .cfi_endproc Whilst the DM2 branch produces an even better result than previous GCC versions I have tested on: .LFB0: .cfi_startproc movl b+16(%rip), %eax movdqu b(%rip), %xmm0 movl %eax, a+16(%rip) xorl %eax, %eax movups %xmm0, a(%rip) ret