[PATCH] D100365: [AArch64] Fix windows vararg functions with floats in the fixed args

Martin Storsjö via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 14 03:57:29 PDT 2021


mstorsjo added inline comments.


================
Comment at: llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp:560-561
 static std::pair<CCAssignFn *, CCAssignFn *>
 getAssignFnsForCC(CallingConv::ID CC, const AArch64TargetLowering &TLI) {
   return {TLI.CCAssignFnForCall(CC, false), TLI.CCAssignFnForCall(CC, true)};
 }
----------------
mstorsjo wrote:
> rnk wrote:
> > Can we put the logic here?
> Hmm, that might be possible, I'll have a go at it.
Actually, it looks to me like it'd be more of a mess than what this patch is; `getAssignFnsForCC` is called in 5 places, and we'd need to have access to the MachineFunction (for querying the subtarget, whether the calling convention is a windows one, and for querying whether the function is a variadic one). E.g. in the case of doCallerAndCalleePassArgsTheSameWay below, we have the MachineFunction for the caller, but for the callee, we only have a `CallLoweringInfo` struct which only contains a MachineOperand.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D100365/new/

https://reviews.llvm.org/D100365



More information about the llvm-commits mailing list