diff options
| author | Chris Lattner <sabre@nondot.org> | 2002-12-17 03:16:10 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2002-12-17 03:16:10 +0000 |
| commit | 0ea32b8dd3497f8494b2bb1cfd5bbbd4895eff81 (patch) | |
| tree | f9f553d6266304e0d9af32e4d6a9fbbb6bc2d964 /llvm | |
| parent | eaf58b03b26ac6a55cd5ca48be6cac7808d27ede (diff) | |
| download | bcm5719-llvm-0ea32b8dd3497f8494b2bb1cfd5bbbd4895eff81.tar.gz bcm5719-llvm-0ea32b8dd3497f8494b2bb1cfd5bbbd4895eff81.zip | |
Add prolog/epilog spills/reloads to counters
Move X86 specific alignment gunk to X86 files
llvm-svn: 5096
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/CodeGen/RegAllocLocal.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/RegAllocLocal.cpp b/llvm/lib/CodeGen/RegAllocLocal.cpp index 6ac2d33cce3..e5c70a18e64 100644 --- a/llvm/lib/CodeGen/RegAllocLocal.cpp +++ b/llvm/lib/CodeGen/RegAllocLocal.cpp @@ -547,6 +547,7 @@ void RA::AllocateBasicBlock(MachineBasicBlock &MBB) { assert(PhysRegsUseOrder.empty() && "Physical regs still allocated?"); } + /// EmitPrologue - Use the register info object to add a prologue to the /// function and save any callee saved registers we are responsible for. /// @@ -564,18 +565,19 @@ void RA::EmitPrologue() { unsigned Offset = getStackSpaceFor(CSRegs[i], RegClass); // Insert the spill to the stack frame... + ++NumSpilled; I = RegInfo.storeReg2RegOffset(MBB, I, CSRegs[i], RegInfo.getFramePointer(), -Offset, RegClass->getDataSize()); } - // Round stack allocation up to a nice alignment to keep the stack aligned - // FIXME: This is X86 specific! Move to RegInfo.emitPrologue()! - NumBytesAllocated = (NumBytesAllocated + 3) & ~3; - // Add prologue to the function... RegInfo.emitPrologue(*MF, NumBytesAllocated); } + +/// EmitEpilogue - Use the register info object to add a epilogue to the +/// function and restore any callee saved registers we are responsible for. +/// void RA::EmitEpilogue(MachineBasicBlock &MBB) { // Insert instructions before the return. MachineBasicBlock::iterator I = --MBB.end(); @@ -584,6 +586,7 @@ void RA::EmitEpilogue(MachineBasicBlock &MBB) { for (unsigned i = 0; CSRegs[i]; ++i) { const TargetRegisterClass *RegClass = PhysRegClasses[CSRegs[i]]; unsigned Offset = getStackSpaceFor(CSRegs[i], RegClass); + ++NumReloaded; I = RegInfo.loadRegOffset2Reg(MBB, I, CSRegs[i], RegInfo.getFramePointer(), -Offset, RegClass->getDataSize()); --I; // Insert in reverse order |

