[llvm-commits] CVS: llvm/lib/VMCore/PassManager.cpp
Devang Patel
dpatel at apple.com
Fri Dec 8 15:11:58 PST 2006
Changes in directory llvm/lib/VMCore:
PassManager.cpp updated: 1.68 -> 1.69
---
Log message:
Keep track of other pass managers, that are not directly managed by
top level manager. Use this info to findAnalysisPass.
---
Diffs of the changes: (+19 -5)
PassManager.cpp | 24 +++++++++++++++++++-----
1 files changed, 19 insertions(+), 5 deletions(-)
Index: llvm/lib/VMCore/PassManager.cpp
diff -u llvm/lib/VMCore/PassManager.cpp:1.68 llvm/lib/VMCore/PassManager.cpp:1.69
--- llvm/lib/VMCore/PassManager.cpp:1.68 Fri Dec 8 16:57:48 2006
+++ llvm/lib/VMCore/PassManager.cpp Fri Dec 8 17:11:43 2006
@@ -141,11 +141,21 @@
PassManagers.push_back(Manager);
}
+ // Add Manager into the list of managers that are not directly
+ // maintained by this top level pass manager
+ void addOtherPassManager(Pass *Manager) {
+ OtherPassManagers.push_back(Manager);
+ }
+
private:
/// Collection of pass managers
std::vector<Pass *> PassManagers;
+ /// Collection of pass managers that are not directly maintained
+ /// by this pass manager
+ std::vector<Pass *> OtherPassManagers;
+
// Map to keep track of last user of the analysis pass.
// LastUser->second is the last user of Lastuser->first.
std::map<Pass *, Pass *> LastUser;
@@ -231,14 +241,16 @@
}
}
- if (P)
- return P;
-
- // Check pass managers;
+ // Check pass managers
for (std::vector<Pass *>::iterator I = PassManagers.begin(),
E = PassManagers.end(); P == NULL && I != E; ++I)
P = NULL; // FIXME: (*I)->findAnalysisPass(AID, false /* Search downward */);
+ // Check other pass managers
+ for (std::vector<Pass *>::iterator I = OtherPassManagers.begin(),
+ E = OtherPassManagers.end(); P == NULL && I != E; ++I)
+ P = NULL; // FIXME: (*I)->findAnalysisPass(AID, false /* Search downward */);
+
return P;
}
@@ -839,6 +851,7 @@
activeBBPassManager =
new BasicBlockPassManager_New(getDepth() + 1);
addPassToManager(activeBBPassManager, false);
+ TPM->addOtherPassManager(activeBBPassManager);
// Add pass into new manager. This time it must succeed.
if (!activeBBPassManager->addPass(BP))
@@ -970,7 +983,8 @@
activeFunctionPassManager =
new FunctionPassManagerImpl_New(getDepth() + 1);
addPassToManager(activeFunctionPassManager, false);
-
+ TPM->addOtherPassManager(activeFunctionPassManager);
+
// Add pass into new manager. This time it must succeed.
if (!activeFunctionPassManager->addPass(FP))
assert(0 && "Unable to add pass");
More information about the llvm-commits
mailing list