diff options
-rw-r--r-- | lib/VMCore/PassManagerT.h | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/lib/VMCore/PassManagerT.h b/lib/VMCore/PassManagerT.h index b679f6ffd5..2a7be145fa 100644 --- a/lib/VMCore/PassManagerT.h +++ b/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 // |