aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/llvm/Pass.h39
-rw-r--r--include/llvm/PassManager.h8
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);