When inspecting the calling convention, for calling windows functions from a non-windows function, inspect the calling convention of the called function, not the caller.
Also remove an unnecessary parameter to AArch64CallLowering OutgoingArgHandler.
Paths
| Differential D100890
[AArch64] Fix calling windows varargs with floats in fixed args from non-windows functions ClosedPublic Authored by mstorsjo on Apr 20 2021, 2:10 PM.
Details Summary When inspecting the calling convention, for calling windows functions from a non-windows function, inspect the calling convention of the called function, not the caller. Also remove an unnecessary parameter to AArch64CallLowering OutgoingArgHandler.
Diff Detail
Event TimelineHerald added subscribers: danielkiss, hiraditya, kristof.beyls. · View Herald TranscriptApr 20 2021, 2:10 PM
Comment Actions Updated to check the CC of the callee, not the caller, both in GlobalISel and AArch64ISelLowering. mstorsjo retitled this revision from [AArch64] Remove an unnecessary parameter to AArch64CallLowering OutgoingArgHandler. NFC. to [AArch64] Fix calling windows varargs with floats in fixed args from non-windows functions.Apr 21 2021, 12:28 AM This revision is now accepted and ready to land.Apr 21 2021, 5:10 PM Closed by commit rG8000e1f5789c: [AArch64] Fix calling windows varargs with floats in fixed args from non… (authored by mstorsjo). · Explain WhyApr 22 2021, 2:03 AM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 339520 llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp
llvm/test/CodeGen/AArch64/win64_vararg_float.ll
llvm/test/CodeGen/AArch64/win64_vararg_float_cc.ll
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This is also broken. This is using the calling convention of the calling function, not the callee