diff options
author | Jim Grosbach <grosbach@apple.com> | 2010-10-20 00:02:50 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2010-10-20 00:02:50 +0000 |
commit | 8b95c3ebfbd492c2ac863df93e40c11fc2e914fd (patch) | |
tree | 84b5e09de227905a5b68d639aa35f0e18c21b540 | |
parent | f6d7df6f21abcf15cfa10a6ac7fbb2f7c959093d (diff) | |
download | external_llvm-8b95c3ebfbd492c2ac863df93e40c11fc2e914fd.zip external_llvm-8b95c3ebfbd492c2ac863df93e40c11fc2e914fd.tar.gz external_llvm-8b95c3ebfbd492c2ac863df93e40c11fc2e914fd.tar.bz2 |
Add dynamic realignment when rematerializing the base register.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116886 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/ARM/ARMExpandPseudoInsts.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMExpandPseudoInsts.cpp b/lib/Target/ARM/ARMExpandPseudoInsts.cpp index bbfd627..39d7afa 100644 --- a/lib/Target/ARM/ARMExpandPseudoInsts.cpp +++ b/lib/Target/ARM/ARMExpandPseudoInsts.cpp @@ -606,6 +606,19 @@ bool ARMExpandPseudo::ExpandMBB(MachineBasicBlock &MBB) { FramePtr, -NumBytes, ARMCC::AL, 0, *TII); } + // If there's dynamic realignment, adjust for it. + if (!RI.needsStackRealignment(MF)) { + MachineFrameInfo *MFI = MF.getFrameInfo(); + unsigned MaxAlign = MFI->getMaxAlignment(); + assert (!AFI->isThumb1OnlyFunction()); + // Emit bic r6, r6, MaxAlign + unsigned bicOpc = AFI->isThumbFunction() ? + ARM::t2BICri : ARM::BICri; + AddDefaultCC(AddDefaultPred(BuildMI(MBB, MBBI, MI.getDebugLoc(), + TII->get(bicOpc), ARM::R6) + .addReg(ARM::R6, RegState::Kill) + .addImm(MaxAlign-1))); + } } MI.eraseFromParent(); |