[llvm] [AMDGPU] Restore SP correctly in functions with dynamic allocas (PR #122743)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 13 09:37:40 PST 2025
================
@@ -525,8 +525,11 @@ Register SIRegisterInfo::getFrameRegister(const MachineFunction &MF) const {
bool SIRegisterInfo::hasBasePointer(const MachineFunction &MF) const {
// When we need stack realignment, we can't reference off of the
// stack pointer, so we reserve a base pointer.
+ // For functions with dynamically sized stack objects, we need to reference
+ // off the base pointer in the epilog to restore the stack frame.
const MachineFrameInfo &MFI = MF.getFrameInfo();
- return MFI.getNumFixedObjects() && shouldRealignStack(MF);
+ return (MFI.getNumFixedObjects() && shouldRealignStack(MF)) ||
+ MFI.hasVarSizedObjects();
----------------
arsenm wrote:
We should have the use fp path and use BP as a fallback if really necessary. What is the idea?
https://github.com/llvm/llvm-project/pull/122743
More information about the llvm-commits
mailing list