From: Jim Grosbach Date: Fri, 3 Sep 2010 18:28:19 +0000 (+0000) Subject: Check the local frame alignment for determining whether dynamic stack X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=fc633002339439339e94f83eca9a012c6fc51e50;p=oota-llvm.git Check the local frame alignment for determining whether dynamic stack 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 --- diff --git a/lib/Target/ARM/ARMBaseRegisterInfo.cpp b/lib/Target/ARM/ARMBaseRegisterInfo.cpp index 99c2e997e7d..8c1b913a20a 100644 --- a/lib/Target/ARM/ARMBaseRegisterInfo.cpp +++ b/lib/Target/ARM/ARMBaseRegisterInfo.cpp @@ -639,7 +639,7 @@ needsStackRealignment(const MachineFunction &MF) const { const Function *F = MF.getFunction(); const ARMFunctionInfo *AFI = MF.getInfo(); 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