diff options
author | Devang Patel <dpatel@apple.com> | 2007-01-17 20:30:17 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2007-01-17 20:30:17 +0000 |
commit | dffca63396eac3e997b7ef948bfefb5764d70ec6 (patch) | |
tree | 1b8d31c6dad3ecc887ad1fceb8728df5363a1c5f /llvm/lib/VMCore/PassManager.cpp | |
parent | e7b24afae1c2b45194dc22c172123517f9ec6bf2 (diff) | |
download | bcm5719-llvm-dffca63396eac3e997b7ef948bfefb5764d70ec6.tar.gz bcm5719-llvm-dffca63396eac3e997b7ef948bfefb5764d70ec6.zip |
Update assignPassManager() signature to allow selection of preferred
pass manager type. This allows new FPPassManager to select Call Graph
Pass Manager (if available) as its parent.
llvm-svn: 33306
Diffstat (limited to 'llvm/lib/VMCore/PassManager.cpp')
-rw-r--r-- | llvm/lib/VMCore/PassManager.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/llvm/lib/VMCore/PassManager.cpp b/llvm/lib/VMCore/PassManager.cpp index 6f0c4527be3..476dad7215d 100644 --- a/llvm/lib/VMCore/PassManager.cpp +++ b/llvm/lib/VMCore/PassManager.cpp @@ -1202,7 +1202,8 @@ void PMStack::handleLastUserOverflow() { /// Find appropriate Module Pass Manager in the PM Stack and /// add self into that manager. -void ModulePass::assignPassManager(PMStack &PMS) { +void ModulePass::assignPassManager(PMStack &PMS, + PassManagerType PreferredType) { // Find Module Pass Manager while(!PMS.empty()) { @@ -1219,7 +1220,8 @@ void ModulePass::assignPassManager(PMStack &PMS) { /// Find appropriate Function Pass Manager or Call Graph Pass Manager /// in the PM Stack and add self into that manager. -void FunctionPass::assignPassManager(PMStack &PMS) { +void FunctionPass::assignPassManager(PMStack &PMS, + PassManagerType PreferredType) { // Find Module Pass Manager (TODO : Or Call Graph Pass Manager) while(!PMS.empty()) { @@ -1245,7 +1247,13 @@ void FunctionPass::assignPassManager(PMStack &PMS) { // [3] Assign manager to manage this new manager. This may create // and push new managers into PMS Pass *P = dynamic_cast<Pass *>(FPP); - P->assignPassManager(PMS); + + // If Call Graph Pass Manager is active then use it to manage + // this new Function Pass manager. + if (PMD->getPassManagerType() == PMT_CallGraphPassManager) + P->assignPassManager(PMS, PMT_CallGraphPassManager); + else + P->assignPassManager(PMS); // [4] Push new manager into PMS PMS.push(FPP); @@ -1257,7 +1265,8 @@ void FunctionPass::assignPassManager(PMStack &PMS) { /// Find appropriate Basic Pass Manager or Call Graph Pass Manager /// in the PM Stack and add self into that manager. -void BasicBlockPass::assignPassManager(PMStack &PMS) { +void BasicBlockPass::assignPassManager(PMStack &PMS, + PassManagerType PreferredType) { BBPassManager *BBP = NULL; |