[llvm-commits] [llvm] r116886 - /llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp
Jim Grosbach
grosbach at apple.com
Tue Oct 19 17:02:50 PDT 2010
Author: grosbach
Date: Tue Oct 19 19:02:50 2010
New Revision: 116886
URL: http://llvm.org/viewvc/llvm-project?rev=116886&view=rev
Log:
Add dynamic realignment when rematerializing the base register.
Modified:
llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp
Modified: llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp?rev=116886&r1=116885&r2=116886&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp Tue Oct 19 19:02:50 2010
@@ -606,6 +606,19 @@
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();
More information about the llvm-commits
mailing list