diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/Pass.h | 39 | ||||
-rw-r--r-- | include/llvm/PassManager.h | 8 |
2 files changed, 28 insertions, 19 deletions
diff --git a/include/llvm/Pass.h b/include/llvm/Pass.h index 4730a668a8..90e614d632 100644 --- a/include/llvm/Pass.h +++ b/include/llvm/Pass.h @@ -44,7 +44,10 @@ class Module; class AnalysisUsage; class PassInfo; class ImmutablePass; -template<class UnitType> class PassManagerT; +template<class Trait> class PassManagerT; +class BasicBlockPassManager; +class FunctionPassManagerT; +class ModulePassManager; struct AnalysisResolver; // AnalysisID - Use the PassInfo to identify a pass... @@ -197,9 +200,10 @@ public: } private: - friend class PassManagerT<Module>; - friend class PassManagerT<Function>; - friend class PassManagerT<BasicBlock>; + template<typename Trait> friend class PassManagerT; + friend class ModulePassManager; + friend class FunctionPassManagerT; + friend class BasicBlockPassManager; }; inline std::ostream &operator<<(std::ostream &OS, const Pass &P) { @@ -220,7 +224,7 @@ public: virtual bool runPass(Module &M) { return runOnModule(M); } virtual bool runPass(BasicBlock&) { return false; } - virtual void addToPassManager(PassManagerT<Module> *PM, AnalysisUsage &AU); + virtual void addToPassManager(ModulePassManager *PM, AnalysisUsage &AU); }; @@ -244,8 +248,9 @@ public: virtual bool runOnModule(Module &M) { return false; } private: - friend class PassManagerT<Module>; - virtual void addToPassManager(PassManagerT<Module> *PM, AnalysisUsage &AU); + template<typename Trait> friend class PassManagerT; + friend class ModulePassManager; + virtual void addToPassManager(ModulePassManager *PM, AnalysisUsage &AU); }; //===----------------------------------------------------------------------===// @@ -286,11 +291,12 @@ public: bool run(Function &F); private: - friend class PassManagerT<Module>; - friend class PassManagerT<Function>; - friend class PassManagerT<BasicBlock>; - virtual void addToPassManager(PassManagerT<Module> *PM, AnalysisUsage &AU); - virtual void addToPassManager(PassManagerT<Function> *PM, AnalysisUsage &AU); + template<typename Trait> friend class PassManagerT; + friend class ModulePassManager; + friend class FunctionPassManagerT; + friend class BasicBlockPassManager; + virtual void addToPassManager(ModulePassManager *PM, AnalysisUsage &AU); + virtual void addToPassManager(FunctionPassManagerT *PM, AnalysisUsage &AU); }; @@ -344,10 +350,11 @@ struct BasicBlockPass : public FunctionPass { virtual bool runPass(BasicBlock &BB); private: - friend class PassManagerT<Function>; - friend class PassManagerT<BasicBlock>; - virtual void addToPassManager(PassManagerT<Function> *PM, AnalysisUsage &AU); - virtual void addToPassManager(PassManagerT<BasicBlock> *PM,AnalysisUsage &AU); + template<typename Trait> friend class PassManagerT; + friend class FunctionPassManagerT; + friend class BasicBlockPassManager; + virtual void addToPassManager(FunctionPassManagerT *PM, AnalysisUsage &AU); + virtual void addToPassManager(BasicBlockPassManager *PM,AnalysisUsage &AU); }; /// If the user specifies the -time-passes argument on an LLVM tool command line diff --git a/include/llvm/PassManager.h b/include/llvm/PassManager.h index 8506287308..47b49adeb8 100644 --- a/include/llvm/PassManager.h +++ b/include/llvm/PassManager.h @@ -23,10 +23,12 @@ class Pass; class ModulePass; class Module; class ModuleProvider; -template<class UnitType> class PassManagerT; +class ModulePassManager; +class FunctionPassManagerT; +class BasicBlockPassManager; class PassManager { - PassManagerT<Module> *PM; // This is a straightforward Pimpl class + ModulePassManager *PM; // This is a straightforward Pimpl class public: PassManager(); ~PassManager(); @@ -49,7 +51,7 @@ class ImmutablePass; class Function; class FunctionPassManager { - PassManagerT<Function> *PM; // This is a straightforward Pimpl class + FunctionPassManagerT *PM; // This is a straightforward Pimpl class ModuleProvider *MP; public: FunctionPassManager(ModuleProvider *P); |