From 25919cb7802f2682b159a040ba07c5bd12b54efa Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Thu, 11 Jan 2007 01:10:25 +0000 Subject: [PATCH] Add PassManagerType enum. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33065 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Pass.h | 12 ++++++++++++ lib/VMCore/PassManager.cpp | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/include/llvm/Pass.h b/include/llvm/Pass.h index 7599b678ec8..9951a988bf0 100644 --- a/include/llvm/Pass.h +++ b/include/llvm/Pass.h @@ -323,6 +323,18 @@ public: virtual void assignPassManager(PMStack &PMS); }; +/// Different types of internal pass managers. External pass managers +/// (PassManager and FunctionPassManager) are not represented here. +/// Ordering of pass manager types is important here. +enum PassManagerType { + PMT_Unknown = 0, + PMT_ModulePassManager = 1, /// MPPassManager + PMT_CallGraphPassManager, /// CGPassManager + PMT_FunctionPassManager, /// FPPassManager + PMT_LoopPassManager, /// LPPassManager + PMT_BasicBlockPassManager /// BBPassManager +}; + /// PMStack /// Top level pass manager (see PasManager.cpp) maintains active Pass Managers /// using PMStack. Each Pass implements assignPassManager() to connect itself diff --git a/lib/VMCore/PassManager.cpp b/lib/VMCore/PassManager.cpp index 62e453399b6..00f08cac9ee 100644 --- a/lib/VMCore/PassManager.cpp +++ b/lib/VMCore/PassManager.cpp @@ -291,6 +291,10 @@ public: return PassVector.size(); } + virtual PassManagerType getPassManagerType() { + assert ( 0 && "Invalid use of getPassManagerType"); + return PMT_Unknown; + } protected: // If a FunctionPass F is the last user of ModulePass info M @@ -359,6 +363,10 @@ public: BasicBlockPass *BP = static_cast(PassVector[N]); return BP; } + + virtual PassManagerType getPassManagerType() { + return PMT_BasicBlockPassManager; + } }; //===----------------------------------------------------------------------===// @@ -413,6 +421,9 @@ public: return FP; } + virtual PassManagerType getPassManagerType() { + return PMT_FunctionPassManager; + } private: // Active Pass Manager BBPassManager *activeBBPassManager; @@ -529,6 +540,7 @@ public: return MP; } + virtual PassManagerType getPassManagerType() { return PMT_ModulePassManager; } private: // Active Pass Manager FPPassManager *activeFunctionPassManager;