diff options
| author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-12-20 22:15:04 +0000 |
|---|---|---|
| committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-12-20 22:15:04 +0000 |
| commit | b95c102c2f00f69f53243f4fe310744d48307439 (patch) | |
| tree | 396ca542066fc2307d3019897eb0ed5f1aa09238 /llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp | |
| parent | 14468c6cb6a87d45aad38722f55f586a804b57e0 (diff) | |
| download | bcm5719-llvm-b95c102c2f00f69f53243f4fe310744d48307439.tar.gz bcm5719-llvm-b95c102c2f00f69f53243f4fe310744d48307439.zip | |
Heed spill slot alignment on ARM.
Use the spill slot alignment as well as the local variable alignment to
determine when the stack needs to be realigned. This works now that the
ARM target can always realign the stack by using a base pointer.
Still respect the ARMBaseRegisterInfo::canRealignStack() function
vetoing a realigned stack. Don't use aligned spill code in that case.
llvm-svn: 146997
Diffstat (limited to 'llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp b/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp index 9c91bcc3075..44efb6a761e 100644 --- a/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp +++ b/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp @@ -542,7 +542,7 @@ needsStackRealignment(const MachineFunction &MF) const { const MachineFrameInfo *MFI = MF.getFrameInfo(); const Function *F = MF.getFunction(); unsigned StackAlign = MF.getTarget().getFrameLowering()->getStackAlignment(); - bool requiresRealignment = ((MFI->getLocalFrameMaxAlign() > StackAlign) || + bool requiresRealignment = ((MFI->getMaxAlignment() > StackAlign) || F->hasFnAttr(Attribute::StackAlignment)); return requiresRealignment && canRealignStack(MF); |

