Use getPassManagerType() instead of dynamic_cast.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33078 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Devang Patel 2007-01-11 19:59:06 +00:00
parent 4fe16d607d
commit 6b9420e943

View File

@ -1686,17 +1686,14 @@ void PMStack::handleLastUserOverflow() {
/// add self into that manager. /// add self into that manager.
void ModulePass::assignPassManager(PMStack &PMS) { void ModulePass::assignPassManager(PMStack &PMS) {
MPPassManager *MPP = NULL;
// Find Module Pass Manager // Find Module Pass Manager
while(!PMS.empty()) { while(!PMS.empty()) {
if (PMS.top()->getPassManagerType() > PMT_ModulePassManager)
MPP = dynamic_cast<MPPassManager *>(PMS.top());
if (MPP)
break; // Found it
else
PMS.pop(); // Pop children pass managers PMS.pop(); // Pop children pass managers
else
break;
} }
MPPassManager *MPP = dynamic_cast<MPPassManager *>(PMS.top());
assert(MPP && "Unable to find Module Pass Manager"); assert(MPP && "Unable to find Module Pass Manager");
MPP->addPassToManager(this); MPP->addPassToManager(this);
@ -1706,21 +1703,14 @@ void ModulePass::assignPassManager(PMStack &PMS) {
/// in the PM Stack and add self into that manager. /// in the PM Stack and add self into that manager.
void FunctionPass::assignPassManager(PMStack &PMS) { void FunctionPass::assignPassManager(PMStack &PMS) {
FPPassManager *FPP = NULL;
// Find Module Pass Manager (TODO : Or Call Graph Pass Manager) // Find Module Pass Manager (TODO : Or Call Graph Pass Manager)
while(!PMS.empty()) { while(!PMS.empty()) {
if (PMS.top()->getPassManagerType() > PMT_FunctionPassManager)
FPP = dynamic_cast<FPPassManager *>(PMS.top()); PMS.pop();
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
else else
break; // PMS.top() is either Module Pass Manager or Call Graph break;
// Pass Manager
} }
FPPassManager *FPP = dynamic_cast<FPPassManager *>(PMS.top());
// Create new Function Pass Manager // Create new Function Pass Manager
if (!FPP) { if (!FPP) {