Original implementation can't correctly handle m256 and m512 types passed
by reference through stack. This patch fixes it.
Details
Diff Detail
Event Timeline
lib/Target/X86/X86CallingConv.cpp | ||
---|---|---|
165–168 | One way to deal with this would be to find MCRegisterInfo and ask if this is a sub/super register of XMM0 so we don't have to enumerate all the X,Y,Z cases and inevitable W someday in the future. But I'd accept this fix as is because I'm not sure how to get the register info data here. |
I have updated the patch so that we don't have to enumerate all the X,Y,Z cases and inevitable W someday in the future. Is it ok for merge?
lgtm
lib/Target/X86/X86CallingConv.cpp | ||
---|---|---|
165–168 | Eh, now I feel this made the code less readable since we still have to say XMM4/5 twice. Anyway, I'm not that concerned. |
lib/Target/X86/X86CallingConv.cpp | ||
---|---|---|
165–168 | The XMM4/5 only appear once. Can we merge it now? |
lib/Target/X86/X86CallingConv.cpp | ||
---|---|---|
165–168 | Sure, I already approved the patch, but it needs a committer to submit it. I see this is your first patch in phab, so I'll go ahead and do that. Thanks for finding regsOverlap! |
One way to deal with this would be to find MCRegisterInfo and ask if this is a sub/super register of XMM0 so we don't have to enumerate all the X,Y,Z cases and inevitable W someday in the future. But I'd accept this fix as is because I'm not sure how to get the register info data here.