summaryrefslogtreecommitdiff
path: root/lib/Target/ARM/Thumb1FrameLowering.cpp
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@apple.com>2011-10-20 00:07:12 +0000
committerChad Rosier <mcrosier@apple.com>2011-10-20 00:07:12 +0000
commit6690bca623d1f6405b95db5b1760f7ba8436e3fb (patch)
tree6c50cf29415edd4ae071a6130239499fd79b0dee /lib/Target/ARM/Thumb1FrameLowering.cpp
parent9be72d43948b3bad4a0ac8ea01e24fd36e6db615 (diff)
downloadllvm-6690bca623d1f6405b95db5b1760f7ba8436e3fb.tar.gz
llvm-6690bca623d1f6405b95db5b1760f7ba8436e3fb.tar.bz2
llvm-6690bca623d1f6405b95db5b1760f7ba8436e3fb.tar.xz
Revert 142337. Thumb1 still doesn't support dynamic stack realignment. :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142557 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/Thumb1FrameLowering.cpp')
-rw-r--r--lib/Target/ARM/Thumb1FrameLowering.cpp30
1 files changed, 4 insertions, 26 deletions
diff --git a/lib/Target/ARM/Thumb1FrameLowering.cpp b/lib/Target/ARM/Thumb1FrameLowering.cpp
index ad1edc8dd8..d8481778c0 100644
--- a/lib/Target/ARM/Thumb1FrameLowering.cpp
+++ b/lib/Target/ARM/Thumb1FrameLowering.cpp
@@ -155,32 +155,10 @@ void Thumb1FrameLowering::emitPrologue(MachineFunction &MF) const {
AFI->setGPRCalleeSavedArea2Size(GPRCS2Size);
AFI->setDPRCalleeSavedAreaSize(DPRCSSize);
- // If we need dynamic stack realignment, do it here. Be paranoid and make
- // sure if we also have VLAs, we have a base pointer for frame access.
- if (RegInfo->needsStackRealignment(MF)) {
- // We cannot use sp as source/dest register here, thus we're emitting the
- // following sequence:
- // mov r4, sp
- // lsrs r4, r4, Log2MaxAlign
- // lsls r4, r4, Log2MaxAlign
- // mov sp, r4
- unsigned MaxAlign = MFI->getMaxAlignment();
- unsigned Log2MaxAlign = Log2_32(MaxAlign);
- AddDefaultPred(BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr), ARM::R4)
- .addReg(ARM::SP, RegState::Kill));
- AddDefaultPred(AddDefaultT1CC(BuildMI(MBB, MBBI, dl, TII.get(ARM::tLSRri),
- ARM::R4))
- .addReg(ARM::R4, RegState::Kill)
- .addImm(Log2MaxAlign));
- AddDefaultPred(AddDefaultT1CC(BuildMI(MBB, MBBI, dl, TII.get(ARM::tLSLri),
- ARM::R4))
- .addReg(ARM::R4, RegState::Kill)
- .addImm(Log2MaxAlign));
- AddDefaultPred(BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr), ARM::SP)
- .addReg(ARM::R4, RegState::Kill));
-
- AFI->setShouldRestoreSPFromFP(true);
- }
+ // Thumb1 does not currently support dynamic stack realignment. Report a
+ // fatal error rather then silently generate bad code.
+ if (RegInfo->needsStackRealignment(MF))
+ report_fatal_error("Dynamic stack realignment not supported for thumb1.");
// If we need a base pointer, set it up here. It's whatever the value
// of the stack pointer is at this point. Any variable size objects