https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67609
--- Comment #24 from Vladimir Makarov <vmakarov at gcc dot gnu.org> --- (In reply to Richard Henderson from comment #23) > Created attachment 36563 [details] > possible patch > > Certainly this fixes the executable test case from #c13. This patch could be a solution to generate a correct code. Unfortunately, it generates ineffective code: movdqa reg(%rip), %xmm1 movaps %xmm1, -24(%rsp) movsd %xmm0, -24(%rsp) movapd -24(%rsp), %xmm2 movaps %xmm2, reg(%rip) instead of better code which would be expected for this case movdqa reg(%rip), %xmm1 movlpd %xmm0, %xmm1 movaps %xmm1, reg(%rip) The patch will force any pseudo which is accessed as a subregister of DImode to be spilled. Although I don't know how it will affect performance of SPEC benchmarks.