[llvm] [AArch64][GlobalISel] Implement selectVaStartAAPCS (PR #106979)

via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 4 02:13:22 PDT 2024


================
@@ -1994,7 +1994,108 @@ bool AArch64InstructionSelector::selectVectorAshrLshr(
 
 bool AArch64InstructionSelector::selectVaStartAAPCS(
     MachineInstr &I, MachineFunction &MF, MachineRegisterInfo &MRI) const {
-  return false;
+
+  if (MF.getSubtarget<AArch64Subtarget>().isCallingConvWin64(
+          MF.getFunction().getCallingConv(), MF.getFunction().isVarArg()))
----------------
Him188 wrote:

In C `__attribute__((ms_abi))` can be used to enable Win64 ABI. `selectVaStartDarwin` handles this property. See commit https://github.com/llvm/llvm-project/commit/1c10d5b175992a9d056a2d763a932e5652386fc1.

This `if` was copied from darwin. I don't know the exact details on what this attribute implies as well as Win64 ABI, so I'm leaving this unsupported.

I think we shouldn't touch `case TargetOpcode::G_VASTART: ` to specifically handle Win64 in this PR.


https://github.com/llvm/llvm-project/pull/106979


More information about the llvm-commits mailing list