From 3b3f89900eb083cf1a352f68c9494bc23e2a29d2 Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Thu, 11 Jan 2007 01:10:25 +0000 Subject: [PATCH] Add PassManagerType enum. llvm-svn: 33065 --- llvm/include/llvm/Pass.h | 12 ++++++++++++ llvm/lib/VMCore/PassManager.cpp | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/llvm/include/llvm/Pass.h b/llvm/include/llvm/Pass.h index 7599b678ec8e..9951a988bf02 100644 --- a/llvm/include/llvm/Pass.h +++ b/llvm/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/llvm/lib/VMCore/PassManager.cpp b/llvm/lib/VMCore/PassManager.cpp index 62e453399b6d..00f08cac9eee 100644 --- a/llvm/lib/VMCore/PassManager.cpp +++ b/llvm/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; -- GitLab