[llvm-commits] CVS: llvm/lib/CodeGen/PrologEpilogInserter.cpp
Evan Cheng
evan.cheng at apple.com
Tue Jan 2 13:31:30 PST 2007
Changes in directory llvm/lib/CodeGen:
PrologEpilogInserter.cpp updated: 1.62 -> 1.63
---
Log message:
- Fixing naming inconsistency: calleesave -> calleesaved.
- Make use of spillCalleeSavedRegisters() and restoreCalleeSavedRegisters().
---
Diffs of the changes: (+30 -24)
PrologEpilogInserter.cpp | 54 ++++++++++++++++++++++++++---------------------
1 files changed, 30 insertions(+), 24 deletions(-)
Index: llvm/lib/CodeGen/PrologEpilogInserter.cpp
diff -u llvm/lib/CodeGen/PrologEpilogInserter.cpp:1.62 llvm/lib/CodeGen/PrologEpilogInserter.cpp:1.63
--- llvm/lib/CodeGen/PrologEpilogInserter.cpp:1.62 Wed Dec 6 20:25:34 2006
+++ llvm/lib/CodeGen/PrologEpilogInserter.cpp Tue Jan 2 15:31:15 2007
@@ -46,7 +46,8 @@
// Allow the target machine to make some adjustments to the function
// e.g. UsedPhysRegs before calculateCalleeSavedRegisters.
- Fn.getTarget().getRegisterInfo()->processFunctionBeforeCalleeSaveScan(Fn);
+ Fn.getTarget().getRegisterInfo()
+ ->processFunctionBeforeCalleeSavedScan(Fn);
// Scan the function for modified callee saved registers and insert spill
// code for any callee saved registers that are modified. Also calculate
@@ -80,7 +81,7 @@
}
private:
- // MinCSFrameIndex, MaxCSFrameIndex - Keeps the range of callee save
+ // MinCSFrameIndex, MaxCSFrameIndex - Keeps the range of callee saved
// stack frame indexes.
unsigned MinCSFrameIndex, MaxCSFrameIndex;
@@ -109,7 +110,7 @@
const TargetFrameInfo *TFI = Fn.getTarget().getFrameInfo();
// Get the callee saved register list...
- const unsigned *CSRegs = RegInfo->getCalleeSaveRegs();
+ const unsigned *CSRegs = RegInfo->getCalleeSavedRegs();
// Get the function call frame set-up and tear-down instruction opcode
int FrameSetupOpcode = RegInfo->getCallFrameSetupOpcode();
@@ -151,7 +152,7 @@
//
const bool *PhysRegsUsed = Fn.getUsedPhysregs();
const TargetRegisterClass* const *CSRegClasses =
- RegInfo->getCalleeSaveRegClasses();
+ RegInfo->getCalleeSavedRegClasses();
std::vector<CalleeSavedInfo> CSI;
for (unsigned i = 0; CSRegs[i]; ++i) {
unsigned Reg = CSRegs[i];
@@ -174,7 +175,7 @@
unsigned NumFixedSpillSlots;
const std::pair<unsigned,int> *FixedSpillSlots =
- TFI->getCalleeSaveSpillSlots(NumFixedSpillSlots);
+ TFI->getCalleeSavedSpillSlots(NumFixedSpillSlots);
// Now that we know which registers need to be saved and restored, allocate
// stack slots for them.
@@ -228,10 +229,13 @@
// code into the entry block.
MachineBasicBlock *MBB = Fn.begin();
MachineBasicBlock::iterator I = MBB->begin();
- for (unsigned i = 0, e = CSI.size(); i != e; ++i) {
- // Insert the spill to the stack frame.
- RegInfo->storeRegToStackSlot(*MBB, I, CSI[i].getReg(), CSI[i].getFrameIdx(),
- CSI[i].getRegClass());
+ if (!RegInfo->spillCalleeSavedRegisters(*MBB, I, CSI)) {
+ for (unsigned i = 0, e = CSI.size(); i != e; ++i) {
+ // Insert the spill to the stack frame.
+ RegInfo->storeRegToStackSlot(*MBB, I, CSI[i].getReg(),
+ CSI[i].getFrameIdx(),
+ CSI[i].getRegClass());
+ }
}
// Add code to restore the callee-save registers in each exiting block.
@@ -255,19 +259,21 @@
// Restore all registers immediately before the return and any terminators
// that preceed it.
- for (unsigned i = 0, e = CSI.size(); i != e; ++i) {
- RegInfo->loadRegFromStackSlot(*MBB, I, CSI[i].getReg(),
- CSI[i].getFrameIdx(),
- CSI[i].getRegClass());
- assert(I != MBB->begin() &&
- "loadRegFromStackSlot didn't insert any code!");
- // Insert in reverse order. loadRegFromStackSlot can insert multiple
- // instructions.
- if (AtStart)
- I = MBB->begin();
- else {
- I = BeforeI;
- ++I;
+ if (!RegInfo->restoreCalleeSavedRegisters(*MBB, I, CSI)) {
+ for (unsigned i = 0, e = CSI.size(); i != e; ++i) {
+ RegInfo->loadRegFromStackSlot(*MBB, I, CSI[i].getReg(),
+ CSI[i].getFrameIdx(),
+ CSI[i].getRegClass());
+ assert(I != MBB->begin() &&
+ "loadRegFromStackSlot didn't insert any code!");
+ // Insert in reverse order. loadRegFromStackSlot can insert multiple
+ // instructions.
+ if (AtStart)
+ I = MBB->begin();
+ else {
+ I = BeforeI;
+ ++I;
+ }
}
}
}
@@ -319,7 +325,7 @@
}
// First assign frame offsets to stack objects that are used to spill
- // callee save registers.
+ // callee saved registers.
if (StackGrowsDown) {
for (unsigned i = 0, e = FFI->getObjectIndexEnd(); i != e; ++i) {
if (i < MinCSFrameIndex || i > MaxCSFrameIndex)
@@ -356,7 +362,7 @@
}
// Then assign frame offsets to stack objects that are not used to spill
- // callee save registers.
+ // callee saved registers.
for (unsigned i = 0, e = FFI->getObjectIndexEnd(); i != e; ++i) {
if (i >= MinCSFrameIndex && i <= MaxCSFrameIndex)
continue;
More information about the llvm-commits
mailing list