X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FCodeGen%2FLiveStackAnalysis.cpp;h=86f7ea20c9be750572a303e7b7ee8a059b975f13;hb=e622087e2064a5496ed9be5d9a8796349cf18b75;hp=0670570ddf5485b91f928078f870f9260a989608;hpb=8b56a90bec639665fc024896d2fc2bdd095c76a3;p=oota-llvm.git diff --git a/lib/CodeGen/LiveStackAnalysis.cpp b/lib/CodeGen/LiveStackAnalysis.cpp index 0670570ddf5..86f7ea20c9b 100644 --- a/lib/CodeGen/LiveStackAnalysis.cpp +++ b/lib/CodeGen/LiveStackAnalysis.cpp @@ -15,25 +15,34 @@ #define DEBUG_TYPE "livestacks" #include "llvm/CodeGen/LiveStackAnalysis.h" +#include "llvm/CodeGen/LiveIntervalAnalysis.h" #include "llvm/CodeGen/Passes.h" #include "llvm/Target/TargetRegisterInfo.h" #include "llvm/Support/Debug.h" #include "llvm/ADT/Statistic.h" +#include using namespace llvm; char LiveStacks::ID = 0; static RegisterPass X("livestacks", "Live Stack Slot Analysis"); +void LiveStacks::scaleNumbering(int factor) { + // Scale the intervals. + for (iterator LI = begin(), LE = end(); LI != LE; ++LI) { + LI->second.scaleNumbering(factor); + } +} + void LiveStacks::getAnalysisUsage(AnalysisUsage &AU) const { - AU.addPreservedID(MachineLoopInfoID); - AU.addPreservedID(MachineDominatorsID); + AU.setPreservesAll(); MachineFunctionPass::getAnalysisUsage(AU); } void LiveStacks::releaseMemory() { // Release VNInfo memroy regions after all VNInfo objects are dtor'd. VNInfoAllocator.Reset(); - s2iMap.clear(); + S2IMap.clear(); + S2RCMap.clear(); } bool LiveStacks::runOnMachineFunction(MachineFunction &) { @@ -43,10 +52,15 @@ bool LiveStacks::runOnMachineFunction(MachineFunction &) { } /// print - Implement the dump method. -void LiveStacks::print(std::ostream &O, const Module* ) const { +void LiveStacks::print(std::ostream &O, const Module*) const { O << "********** INTERVALS **********\n"; for (const_iterator I = begin(), E = end(); I != E; ++I) { I->second.print(O); - O << "\n"; + int Slot = I->first; + const TargetRegisterClass *RC = getIntervalRegClass(Slot); + if (RC) + O << " [" << RC->getName() << "]\n"; + else + O << " [Unknown]\n"; } }