summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-12-17 03:16:10 +0000
committerChris Lattner <sabre@nondot.org>2002-12-17 03:16:10 +0000
commit0ea32b8dd3497f8494b2bb1cfd5bbbd4895eff81 (patch)
treef9f553d6266304e0d9af32e4d6a9fbbb6bc2d964 /llvm
parenteaf58b03b26ac6a55cd5ca48be6cac7808d27ede (diff)
downloadbcm5719-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.cpp11
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
OpenPOWER on IntegriCloud