diff options
author | Chris Lattner <sabre@nondot.org> | 2002-02-04 17:39:42 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-02-04 17:39:42 +0000 |
commit | 4911c357e14a6972e7614c52ed87302b280f7c30 (patch) | |
tree | 32d9733b4594377f582b508ae1c927267d3910d2 /lib/CodeGen | |
parent | f806c025bdf0f9d8ebd0312ca02fa4e3b119d4f3 (diff) |
Make LoopDeptCalculator be an internal artifact of how RegAlloc is implemented,
do not expose it. Additionally, have it be auto generated by the pass framework
for us.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1695 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen')
-rw-r--r-- | lib/CodeGen/RegAlloc/PhyRegAlloc.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/CodeGen/RegAlloc/PhyRegAlloc.cpp b/lib/CodeGen/RegAlloc/PhyRegAlloc.cpp index 422541c584..946a1e9c1b 100644 --- a/lib/CodeGen/RegAlloc/PhyRegAlloc.cpp +++ b/lib/CodeGen/RegAlloc/PhyRegAlloc.cpp @@ -15,6 +15,7 @@ #include "llvm/CodeGen/MachineInstr.h" #include "llvm/CodeGen/MachineCodeForMethod.h" #include "llvm/Analysis/LiveVar/MethodLiveVarInfo.h" +#include "llvm/Analysis/LoopDepth.h" #include "llvm/Target/TargetMachine.h" #include "llvm/Target/MachineFrameInfo.h" #include "llvm/Method.h" @@ -50,12 +51,19 @@ namespace { MethodLiveVarInfo LVI(M); // Analyze live varaibles LVI.analyze(); - PhyRegAlloc PRA(M, Target, &LVI); // allocate registers + PhyRegAlloc PRA(M, Target, &LVI, + &getAnalysis<cfg::LoopDepthCalculator>()); PRA.allocateRegisters(); if (DEBUG_RA) cerr << "\nRegister allocation complete!\n"; return false; } + + virtual void getAnalysisUsageInfo(Pass::AnalysisSet &Requires, + Pass::AnalysisSet &Destroyed, + Pass::AnalysisSet &Provided) { + Requires.push_back(cfg::LoopDepthCalculator::ID); + } }; } @@ -68,13 +76,14 @@ MethodPass *getRegisterAllocator(TargetMachine &T) { //---------------------------------------------------------------------------- PhyRegAlloc::PhyRegAlloc(Method *M, const TargetMachine& tm, - MethodLiveVarInfo *const Lvi) + MethodLiveVarInfo *Lvi, + cfg::LoopDepthCalculator *LDC) : TM(tm), Meth(M), mcInfo(MachineCodeForMethod::get(M)), LVI(Lvi), LRI(M, tm, RegClassList), MRI( tm.getRegInfo() ), NumOfRegClasses(MRI.getNumOfRegClasses()), - LoopDepthCalc(M) { + LoopDepthCalc(LDC) { // create each RegisterClass and put in RegClassList // @@ -272,7 +281,7 @@ void PhyRegAlloc::buildInterferenceGraphs() // find the 10^(loop_depth) of this BB // - BBLoopDepthCost = (unsigned) pow( 10.0, LoopDepthCalc.getLoopDepth(*BBI)); + BBLoopDepthCost = (unsigned) pow( 10.0, LoopDepthCalc->getLoopDepth(*BBI)); // get the iterator for machine instructions // |