summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-12-30 20:00:46 +0000
committerChris Lattner <sabre@nondot.org>2005-12-30 20:00:46 +0000
commit5916d7b6b113099e14948d48f4f4b1a04ea15cb8 (patch)
tree7962414dabc544a3b224fe7e6facc1a13a0634de
parentdef44bec82b1759c32a4d98b60c1982a0891cf9b (diff)
downloadbcm5719-llvm-5916d7b6b113099e14948d48f4f4b1a04ea15cb8.tar.gz
bcm5719-llvm-5916d7b6b113099e14948d48f4f4b1a04ea15cb8.zip
Patch #1 of Saem Ghani's Pass Manager refactoring. From the man:
"All this should do is create what will eventually be the specialised passmanagers. Currently, the templates are inheriting them, once the template specialisations' methods have been absorbed, patches submitted method by method. I'll nuke the specialisations and have the new objects inherit directly from passmanagert, and sanitise the world of all references to templates. " llvm-svn: 25053
-rw-r--r--llvm/lib/VMCore/PassManagerT.h41
1 files changed, 36 insertions, 5 deletions
diff --git a/llvm/lib/VMCore/PassManagerT.h b/llvm/lib/VMCore/PassManagerT.h
index b679f6ffd5a..2a7be145fa6 100644
--- a/llvm/lib/VMCore/PassManagerT.h
+++ b/llvm/lib/VMCore/PassManagerT.h
@@ -175,7 +175,7 @@ class PassManagerT : public PassManagerTraits<UnitType>,public AnalysisResolver{
public:
PassManagerT(ParentClass *Par = 0) : Parent(Par), Batcher(0) {}
- ~PassManagerT() {
+ virtual ~PassManagerT() {
// Delete all of the contained passes...
for (typename std::vector<PassClass*>::iterator
I = Passes.begin(), E = Passes.end(); I != E; ++I)
@@ -623,6 +623,16 @@ public:
};
+//===----------------------------------------------------------------------===//
+// BasicBlockPassManager
+//
+// This pass manager is used to group together all of the BasicBlockPass's
+// into a single unit.
+//
+class BasicBlockPassManager {
+ //TODO:Start absorbing PassManagerTraits<BasicBlock>
+};
+
//===----------------------------------------------------------------------===//
// PassManagerTraits<BasicBlock> Specialization
@@ -630,7 +640,8 @@ public:
// This pass manager is used to group together all of the BasicBlockPass's
// into a single unit.
//
-template<> class PassManagerTraits<BasicBlock> : public BasicBlockPass {
+template<> class PassManagerTraits<BasicBlock> : public BasicBlockPass,
+ public BasicBlockPassManager {
public:
// PassClass - The type of passes tracked by this PassManager
typedef BasicBlockPass PassClass;
@@ -677,6 +688,16 @@ public:
};
+//===----------------------------------------------------------------------===//
+// FunctionPassManager
+//
+// This pass manager is used to group together all of the FunctionPass's
+// into a single unit.
+//
+class FunctionPassManagerT {
+ //TODO:Start absorbing PassManagerTraits<Function>
+};
+
//===----------------------------------------------------------------------===//
// PassManagerTraits<Function> Specialization
@@ -684,7 +705,8 @@ public:
// This pass manager is used to group together all of the FunctionPass's
// into a single unit.
//
-template<> class PassManagerTraits<Function> : public FunctionPass {
+template<> class PassManagerTraits<Function> : public FunctionPass,
+ public FunctionPassManagerT {
public:
// PassClass - The type of passes tracked by this PassManager
typedef FunctionPass PassClass;
@@ -722,13 +744,23 @@ public:
};
+//===----------------------------------------------------------------------===//
+// ModulePassManager
+//
+// This is the top level PassManager implementation that holds generic passes.
+//
+class ModulePassManager {
+ //TODO:Start absorbing PassManagerTraits<Module>
+};
+
//===----------------------------------------------------------------------===//
// PassManagerTraits<Module> Specialization
//
// This is the top level PassManager implementation that holds generic passes.
//
-template<> class PassManagerTraits<Module> : public ModulePass {
+template<> class PassManagerTraits<Module> : public ModulePass,
+ public ModulePassManager {
public:
// PassClass - The type of passes tracked by this PassManager
typedef ModulePass PassClass;
@@ -757,7 +789,6 @@ public:
};
-
//===----------------------------------------------------------------------===//
// PassManagerTraits Method Implementations
//
OpenPOWER on IntegriCloud