summaryrefslogtreecommitdiffstats
path: root/llvm/lib/VMCore/PassManager.cpp
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2007-01-17 20:30:17 +0000
committerDevang Patel <dpatel@apple.com>2007-01-17 20:30:17 +0000
commitdffca63396eac3e997b7ef948bfefb5764d70ec6 (patch)
tree1b8d31c6dad3ecc887ad1fceb8728df5363a1c5f /llvm/lib/VMCore/PassManager.cpp
parente7b24afae1c2b45194dc22c172123517f9ec6bf2 (diff)
downloadbcm5719-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.cpp17
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;
OpenPOWER on IntegriCloud