Delete the 'standard' spiller with used the old spilling framework.

The current register allocators all use the inline spiller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144477 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jakob Stoklund Olesen 2011-11-12 23:29:02 +00:00
parent cfa8101409
commit 5d9b109181
2 changed files with 3 additions and 46 deletions

View File

@ -29,7 +29,7 @@
using namespace llvm;
namespace {
enum SpillerName { trivial, standard, inline_ };
enum SpillerName { trivial, inline_ };
}
static cl::opt<SpillerName>
@ -37,10 +37,9 @@ spillerOpt("spiller",
cl::desc("Spiller to use: (default: standard)"),
cl::Prefix,
cl::values(clEnumVal(trivial, "trivial spiller"),
clEnumVal(standard, "default spiller"),
clEnumValN(inline_, "inline", "inline spiller"),
clEnumValEnd),
cl::init(standard));
cl::init(trivial));
// Spiller virtual destructor implementation.
Spiller::~Spiller() {}
@ -188,54 +187,12 @@ public:
} // end anonymous namespace
namespace {
/// Falls back on LiveIntervals::addIntervalsForSpills.
class StandardSpiller : public Spiller {
protected:
MachineFunction *mf;
LiveIntervals *lis;
LiveStacks *lss;
MachineLoopInfo *loopInfo;
VirtRegMap *vrm;
public:
StandardSpiller(MachineFunctionPass &pass, MachineFunction &mf,
VirtRegMap &vrm)
: mf(&mf),
lis(&pass.getAnalysis<LiveIntervals>()),
lss(&pass.getAnalysis<LiveStacks>()),
loopInfo(pass.getAnalysisIfAvailable<MachineLoopInfo>()),
vrm(&vrm) {}
/// Falls back on LiveIntervals::addIntervalsForSpills.
void spill(LiveRangeEdit &LRE) {
std::vector<LiveInterval*> added =
lis->addIntervalsForSpills(LRE.getParent(), LRE.getUselessVRegs(),
loopInfo, *vrm);
LRE.getNewVRegs()->insert(LRE.getNewVRegs()->end(),
added.begin(), added.end());
// Update LiveStacks.
int SS = vrm->getStackSlot(LRE.getReg());
if (SS == VirtRegMap::NO_STACK_SLOT)
return;
const TargetRegisterClass *RC = mf->getRegInfo().getRegClass(LRE.getReg());
LiveInterval &SI = lss->getOrCreateInterval(SS, RC);
if (!SI.hasAtLeastOneValue())
SI.getNextValue(SlotIndex(), 0, lss->getVNInfoAllocator());
SI.MergeRangesInAsValue(LRE.getParent(), SI.getValNumInfo(0));
}
};
} // end anonymous namespace
llvm::Spiller* llvm::createSpiller(MachineFunctionPass &pass,
MachineFunction &mf,
VirtRegMap &vrm) {
switch (spillerOpt) {
default: assert(0 && "unknown spiller");
case trivial: return new TrivialSpiller(pass, mf, vrm);
case standard: return new StandardSpiller(pass, mf, vrm);
case inline_: return createInlineSpiller(pass, mf, vrm);
}
}

View File

@ -1,4 +1,4 @@
; RUN: llc < %s -verify-machineinstrs -spiller=standard
; RUN: llc < %s -verify-machineinstrs -spiller=trivial
; RUN: llc < %s -verify-machineinstrs -spiller=inline
; PR8612
;