https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48609
--- Comment #6 from Hongtao.liu <crazylht at gmail dot com> --- (In reply to Hongtao.liu from comment #5) > (In reply to Andrew Pinski from comment #2) > > Confirmed, In this case, it is a middle-end issue, I suspect if we used > > V2SFmode for the incoming argument, it might work better. Right now we > Yes, under TAREGT_SSE2 and TARGET_64BIT, we support movv2sf, i think it's > reasonable to use V2SFmode instead of DImode as incoming argument mode for > SCmode. Doesn't help here foo: .LFB0: .cfi_startproc movlps %xmm0, -8(%rsp) # 3 [c=4 l=5] *movv2sf_internal/14 movss -8(%rsp), %xmm0 # 16 [c=8 l=6] *movsf_internal/7 movss %xmm0, bar(%rip) # 11 [c=4 l=8] *movsf_internal/8 movss -4(%rsp), %xmm0 # 17 [c=8 l=6] *movsf_internal/7 movss %xmm0, bar+4(%rip) # 12 [c=4 l=8] *movsf_internal/8 ret # 21 [c=0 l=1] simple_return_internal