[llvm-commits] CVS: llvm/lib/Target/ARM/ARMRegisterInfo.cpp ARMRegisterInfo.h

Evan Cheng evan.cheng at apple.com
Tue May 1 02:13:40 PDT 2007



Changes in directory llvm/lib/Target/ARM:

ARMRegisterInfo.cpp updated: 1.91 -> 1.92
ARMRegisterInfo.h updated: 1.18 -> 1.19
---
Log message:

eliminateFrameIndex() change.

---
Diffs of the changes:  (+5 -4)

 ARMRegisterInfo.cpp |    7 ++++---
 ARMRegisterInfo.h   |    2 +-
 2 files changed, 5 insertions(+), 4 deletions(-)


Index: llvm/lib/Target/ARM/ARMRegisterInfo.cpp
diff -u llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.91 llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.92
--- llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.91	Mon Apr 30 19:52:08 2007
+++ llvm/lib/Target/ARM/ARMRegisterInfo.cpp	Tue May  1 04:13:03 2007
@@ -689,7 +689,7 @@
 }
 
 void ARMRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
-                                          RegScavenger *RS) const{
+                                          int SPAdj, RegScavenger *RS) const{
   unsigned i = 0;
   MachineInstr &MI = *II;
   MachineBasicBlock &MBB = *MI.getParent();
@@ -705,7 +705,7 @@
   unsigned FrameReg = ARM::SP;
   int FrameIndex = MI.getOperand(i).getFrameIndex();
   int Offset = MF.getFrameInfo()->getObjectOffset(FrameIndex) + 
-               MF.getFrameInfo()->getStackSize();
+               MF.getFrameInfo()->getStackSize() + SPAdj;
 
   if (AFI->isGPRCalleeSavedArea1Frame(FrameIndex))
     Offset -= AFI->getGPRCalleeSavedArea1Offset();
@@ -714,6 +714,7 @@
   else if (AFI->isDPRCalleeSavedAreaFrame(FrameIndex))
     Offset -= AFI->getDPRCalleeSavedAreaOffset();
   else if (hasFP(MF)) {
+    assert(SPAdj == 0 && "Unexpected");
     // There is alloca()'s in this function, must reference off the frame
     // pointer instead.
     FrameReg = getFrameRegister(MF);
@@ -988,7 +989,7 @@
     unsigned ScratchReg = findScratchRegister(RS, &ARM::GPRRegClass, AFI);
     if (ScratchReg == 0)
       // No register is "free". Scavenge a register.
-      ScratchReg = RS->scavengeRegister(&ARM::GPRRegClass, II);
+      ScratchReg = RS->scavengeRegister(&ARM::GPRRegClass, II, SPAdj);
     emitARMRegPlusImmediate(MBB, II, ScratchReg, FrameReg,
                             isSub ? -Offset : Offset, TII);
     MI.getOperand(i).ChangeToRegister(ScratchReg, false, false, true);


Index: llvm/lib/Target/ARM/ARMRegisterInfo.h
diff -u llvm/lib/Target/ARM/ARMRegisterInfo.h:1.18 llvm/lib/Target/ARM/ARMRegisterInfo.h:1.19
--- llvm/lib/Target/ARM/ARMRegisterInfo.h:1.18	Mon Apr 30 19:52:08 2007
+++ llvm/lib/Target/ARM/ARMRegisterInfo.h	Tue May  1 04:13:03 2007
@@ -85,7 +85,7 @@
                                      MachineBasicBlock::iterator I) const;
 
   void eliminateFrameIndex(MachineBasicBlock::iterator II,
-                           RegScavenger *RS = NULL) const;
+                           int SPAdj, RegScavenger *RS = NULL) const;
 
   void processFunctionBeforeCalleeSavedScan(MachineFunction &MF,
                                             RegScavenger *RS = NULL) const;






More information about the llvm-commits mailing list