[llvm] [ARM] R11 not pushed adjacent to link register with PAC-M and AAPCS frame chain fix (PR #82801)
Eli Friedman via llvm-commits
llvm-commits at lists.llvm.org
Fri Feb 23 13:20:19 PST 2024
================
@@ -441,18 +441,28 @@ class ARMSubtarget : public ARMGenSubtargetInfo {
}
/// Returns true if the frame setup is split into two separate pushes (first
- /// r0-r7,lr then r8-r11), principally so that the frame pointer is adjacent
- /// to lr. This is always required on Thumb1-only targets, as the push and
- /// pop instructions can't access the high registers.
- bool splitFramePushPop(const MachineFunction &MF) const {
- if (MF.getInfo<ARMFunctionInfo>()->shouldSignReturnAddress())
+ /// r0-r7,lr then r8-r11), principally so that the frame pointer r7 is
+ /// adjacent to lr. This is always required on Thumb1-only targets, as the
+ /// push and pop instructions can't access the high registers.
+ bool splitFramePushPopR7(const MachineFunction &MF) const {
+ if (MF.getInfo<ARMFunctionInfo>()->shouldSignReturnAddress() &&
+ !createAAPCSFrameChain())
return true;
return (getFramePointerReg() == ARM::R7 &&
MF.getTarget().Options.DisableFramePointerElim(MF)) ||
isThumb1Only();
}
- bool splitFramePointerPush(const MachineFunction &MF) const;
+ bool framePointerRequiredForSEHUnwind(const MachineFunction &MF) const;
----------------
efriedma-quic wrote:
"framePointerRequiredForSEHUnwind" doesn't describe what the actual effect is here.
https://github.com/llvm/llvm-project/pull/82801
More information about the llvm-commits
mailing list