diff --git a/lib/VMCore/PassManagerT.h b/lib/VMCore/PassManagerT.h index 88bedd27db1..53bff14c042 100644 --- a/lib/VMCore/PassManagerT.h +++ b/lib/VMCore/PassManagerT.h @@ -620,6 +620,7 @@ public: // Initialize the immutable pass... IP->initializePass(); } + }; @@ -659,7 +660,10 @@ public: virtual const char *getPMName() const { return "BasicBlock"; } virtual const char *getPassName() const { return "BasicBlock Pass Manager"; } - + + virtual bool runOnBasicBlock(BasicBlock &BB); + + // TODO:Start absorbing PassManagerTraits }; @@ -682,7 +686,12 @@ public: // Implement the BasicBlockPass interface... virtual bool doInitialization(Module &M); virtual bool doInitialization(Function &F); - virtual bool runOnBasicBlock(BasicBlock &BB); + + // Forwarded + virtual bool runOnBasicBlock(BasicBlock &BB) { + return BasicBlockPassManager::runOnBasicBlock(BB); + } + virtual bool doFinalization(Function &F); virtual bool doFinalization(Module &M); @@ -728,7 +737,10 @@ public: virtual const char *getPMName() const { return "Function"; } virtual const char *getPassName() const { return "Function Pass Manager"; } - + + virtual bool runOnFunction(Function &F); + + // TODO:Start absorbing PassManagerTraits }; @@ -749,7 +761,12 @@ public: // Implement the FunctionPass interface... virtual bool doInitialization(Module &M); - virtual bool runOnFunction(Function &F); + + // Forwarded + virtual bool runOnFunction(Function &F) { + return FunctionPassManagerT::runOnFunction(F); + } + virtual bool doFinalization(Module &M); virtual void getAnalysisUsage(AnalysisUsage &AU) const { @@ -762,7 +779,6 @@ public: } }; - //===----------------------------------------------------------------------===// // ModulePassManager // @@ -792,6 +808,8 @@ public: // debugging. virtual const char *getPMName() const { return "Module"; } + // runOnModule - Implement the PassManager interface. + virtual bool runOnModule(Module &M); // TODO:Start absorbing PassManagerTraits }; @@ -808,9 +826,9 @@ public: // runPass - Specify how the pass should be run on the UnitType static bool runPass(PassClass *P, Module *M) { return P->runOnModule(*M); } - // runOnModule - Implement the PassManager interface. + // Forwarded bool runOnModule(Module &M) { - return ((PassManagerT*)this)->runOnUnit(&M); + return ModulePassManager::runOnModule(M); } // Forwarded @@ -820,6 +838,31 @@ public: }; +//===----------------------------------------------------------------------===// +// PassManagerTraits Method Implementations +// + +// BasicBlockPassManager Implementations +// + +inline bool BasicBlockPassManager::runOnBasicBlock(BasicBlock &BB) { + return ((PMType*)this)->runOnUnit(&BB); +} + +// FunctionPassManagerT Implementations +// + +inline bool FunctionPassManagerT::runOnFunction(Function &F) { + return ((PMType*)this)->runOnUnit(&F); +} + +// ModulePassManager Implementations +// + +bool ModulePassManager::runOnModule(Module &M) { + return ((PassManagerT*)this)->runOnUnit(&M); +} + //===----------------------------------------------------------------------===// // PassManagerTraits Method Implementations // @@ -840,10 +883,6 @@ inline bool PassManagerTraits::doInitialization(Function &F) { return Changed; } -inline bool PassManagerTraits::runOnBasicBlock(BasicBlock &BB) { - return ((PMType*)this)->runOnUnit(&BB); -} - inline bool PassManagerTraits::doFinalization(Function &F) { bool Changed = false; for (unsigned i = 0, e = ((PMType*)this)->Passes.size(); i != e; ++i) @@ -868,10 +907,6 @@ inline bool PassManagerTraits::doInitialization(Module &M) { return Changed; } -inline bool PassManagerTraits::runOnFunction(Function &F) { - return ((PMType*)this)->runOnUnit(&F); -} - inline bool PassManagerTraits::doFinalization(Module &M) { bool Changed = false; for (unsigned i = 0, e = ((PMType*)this)->Passes.size(); i != e; ++i)