diff options
author | Chris Lattner <sabre@nondot.org> | 2006-01-04 07:47:13 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-01-04 07:47:13 +0000 |
commit | 7f7b730d79c27390ea06aa4bfeb542baf4f8892d (patch) | |
tree | bd7ff66e31b15bc2736c8256eb033494556593c2 /include/llvm/Pass.h | |
parent | 51d6e76ff4cf950b759be389d23e9383a29b1dc9 (diff) | |
download | external_llvm-7f7b730d79c27390ea06aa4bfeb542baf4f8892d.tar.gz external_llvm-7f7b730d79c27390ea06aa4bfeb542baf4f8892d.tar.bz2 external_llvm-7f7b730d79c27390ea06aa4bfeb542baf4f8892d.zip |
Patch #6's in Saem's refactor-the-passmanager patch series. From him:
This sanitises the world, blows away the specialisations and adds
traits per passmanager type -- seemed most natural.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25085 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Pass.h')
-rw-r--r-- | include/llvm/Pass.h | 39 |
1 files changed, 23 insertions, 16 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 |