[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