Index: llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp =================================================================== --- llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp +++ llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp @@ -39,6 +39,11 @@ #define GET_REGINFO_TARGET_DESC #include "AArch64GenRegisterInfo.inc" +static cl::opt + FrameRecordOnTop("aarch64-frame-record-on-top", + cl::desc("place the frame record on top of the frame"), + cl::init(false), cl::Hidden); + AArch64RegisterInfo::AArch64RegisterInfo(const Triple &TT) : AArch64GenRegisterInfo(AArch64::LR), TT(TT) { AArch64_MC::initLLVMToCVRegMapping(this); @@ -120,6 +125,8 @@ return CSR_AArch64_AAPCS_X18_SaveList; if (MF->getInfo()->isSVECC()) return CSR_AArch64_SVE_AAPCS_SaveList; + if (FrameRecordOnTop) + return CSR_Darwin_AArch64_AAPCS_SaveList; return CSR_AArch64_AAPCS_SaveList; }