Check the local frame alignment for determining whether dynamic stack
authorJim Grosbach <grosbach@apple.com>
Fri, 3 Sep 2010 18:28:19 +0000 (18:28 +0000)
committerJim Grosbach <grosbach@apple.com>
Fri, 3 Sep 2010 18:28:19 +0000 (18:28 +0000)
alignment should be performed. Otherwise dynamic realignment may trigger
when the register allocator has already used the frame pointer as a general
purpose register. That is, we need to make sure that the list of reserved
registers doesn't change after register allocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112986 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMBaseRegisterInfo.cpp

index 99c2e997e7d045d76f36be4070992e883d3b18c2..8c1b913a20a52b9e602594f6ec38a95461e42d3c 100644 (file)
@@ -639,7 +639,7 @@ needsStackRealignment(const MachineFunction &MF) const {
   const Function *F = MF.getFunction();
   const ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>();
   unsigned StackAlign = MF.getTarget().getFrameInfo()->getStackAlignment();
-  bool requiresRealignment = ((MFI->getMaxAlignment() > StackAlign) ||
+  bool requiresRealignment = ((MFI->getLocalFrameMaxAlign() > StackAlign) ||
                                F->hasFnAttr(Attribute::StackAlignment));
 
   // FIXME: Currently we don't support stack realignment for functions with