From: Jim Grosbach Date: Wed, 20 Oct 2010 00:02:50 +0000 (+0000) Subject: Add dynamic realignment when rematerializing the base register. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=8b95c3ebfbd492c2ac863df93e40c11fc2e914fd;p=oota-llvm.git 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 --- diff --git a/lib/Target/ARM/ARMExpandPseudoInsts.cpp b/lib/Target/ARM/ARMExpandPseudoInsts.cpp index bbfd627a0cf..39d7afa853d 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();