[llvm] [AMDGPU] Restore SP correctly in functions with dynamic allocas (PR #122743)

Christudasan Devadasan via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 13 09:18:42 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();
----------------
cdevadas wrote:

Shouldn't this required to mark BP as reserved so that regalloc won't use the specific SGPR (S34 at the moment) for allocation?

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


More information about the llvm-commits mailing list