[llvm-commits] CVS: llvm/lib/VMCore/PassManager.cpp
Devang Patel
dpatel at apple.com
Fri Feb 16 19:54:05 PST 2007
Changes in directory llvm/lib/VMCore:
PassManager.cpp updated: 1.135 -> 1.136
---
Log message:
Use inverted map to speedup collectLastUses().
---
Diffs of the changes: (+16 -4)
PassManager.cpp | 20 ++++++++++++++++----
1 files changed, 16 insertions(+), 4 deletions(-)
Index: llvm/lib/VMCore/PassManager.cpp
diff -u llvm/lib/VMCore/PassManager.cpp:1.135 llvm/lib/VMCore/PassManager.cpp:1.136
--- llvm/lib/VMCore/PassManager.cpp:1.135 Wed Feb 7 13:37:53 2007
+++ llvm/lib/VMCore/PassManager.cpp Fri Feb 16 21:53:44 2007
@@ -362,13 +362,19 @@
}
}
+// Walk LastUser map and create inverted map. This should be done
+// after all passes are added and before running first pass.
+void PMTopLevelManager::collectInvertedLU() {
+ for (std::map<Pass *, Pass *>::iterator LUI = LastUser.begin(),
+ LUE = LastUser.end(); LUI != LUE; ++LUI)
+ InvertedLU[LUI->second].push_back(LUI->first);
+}
+
/// Collect passes whose last user is P
void PMTopLevelManager::collectLastUses(std::vector<Pass *> &LastUses,
Pass *P) {
- for (std::map<Pass *, Pass *>::iterator LUI = LastUser.begin(),
- LUE = LastUser.end(); LUI != LUE; ++LUI)
- if (LUI->second == P)
- LastUses.push_back(LUI->first);
+ std::vector<Pass *>&LU = InvertedLU[P];
+ LastUses.insert(LastUses.end(), LU.begin(), LU.end());
}
/// Schedule pass P for execution. Make sure that passes required by
@@ -938,6 +944,9 @@
dumpArguments();
dumpPasses();
+ // Collect inverted map of LastUsers. This improves speed of
+ // collectLastUses().
+ TPM->collectInvertedLU();
initializeAllAnalysisInfo();
for (unsigned Index = 0; Index < getNumContainedManagers(); ++Index) {
FPPassManager *FP = getContainedManager(Index);
@@ -1086,6 +1095,9 @@
dumpArguments();
dumpPasses();
+ // Collect inverted map of LastUsers. This improves speed of
+ // collectLastUses().
+ TPM->collectInvertedLU();
initializeAllAnalysisInfo();
for (unsigned Index = 0; Index < getNumContainedManagers(); ++Index) {
MPPassManager *MP = getContainedManager(Index);
More information about the llvm-commits
mailing list