aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2007-01-11 19:59:06 +0000
committerDevang Patel <dpatel@apple.com>2007-01-11 19:59:06 +0000
commit6b9420e94392040fbe6b2af5e49adbcbc6b32615 (patch)
tree47efe1f23edd0af83904776fcc9e867823ca364d /lib
parent4fe16d607d11e29d742208894909733f5ad01f8f (diff)
Use getPassManagerType() instead of dynamic_cast.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33078 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/VMCore/PassManager.cpp26
1 files changed, 8 insertions, 18 deletions
diff --git a/lib/VMCore/PassManager.cpp b/lib/VMCore/PassManager.cpp
index 00f08cac9e..d71192689a 100644
--- a/lib/VMCore/PassManager.cpp
+++ b/lib/VMCore/PassManager.cpp
@@ -1686,17 +1686,14 @@ void PMStack::handleLastUserOverflow() {
/// add self into that manager.
void ModulePass::assignPassManager(PMStack &PMS) {
- MPPassManager *MPP = NULL;
-
// Find Module Pass Manager
while(!PMS.empty()) {
-
- MPP = dynamic_cast<MPPassManager *>(PMS.top());
- if (MPP)
- break; // Found it
- else
+ if (PMS.top()->getPassManagerType() > PMT_ModulePassManager)
PMS.pop(); // Pop children pass managers
+ else
+ break;
}
+ MPPassManager *MPP = dynamic_cast<MPPassManager *>(PMS.top());
assert(MPP && "Unable to find Module Pass Manager");
MPP->addPassToManager(this);
@@ -1706,21 +1703,14 @@ void ModulePass::assignPassManager(PMStack &PMS) {
/// in the PM Stack and add self into that manager.
void FunctionPass::assignPassManager(PMStack &PMS) {
- FPPassManager *FPP = NULL;
-
// Find Module Pass Manager (TODO : Or Call Graph Pass Manager)
while(!PMS.empty()) {
-
- FPP = dynamic_cast<FPPassManager *>(PMS.top());
- if (FPP)
- break; // Found Function Pass Manager
- else if (dynamic_cast<BBPassManager *>(PMS.top()))
- PMS.pop(); // Pop Basic Block Pass Manager
- // TODO : else if Pop Loop Pass Manager
+ if (PMS.top()->getPassManagerType() > PMT_FunctionPassManager)
+ PMS.pop();
else
- break; // PMS.top() is either Module Pass Manager or Call Graph
- // Pass Manager
+ break;
}
+ FPPassManager *FPP = dynamic_cast<FPPassManager *>(PMS.top());
// Create new Function Pass Manager
if (!FPP) {