[PATCH] D92309: [LegacyPM] Update InversedLastUser on the fly. NFC.
Jay Foad via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 20 08:26:00 PST 2021
foad updated this revision to Diff 317888.
foad added a comment.
Don't dump last uses unless -debug-pass=Details.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D92309/new/
https://reviews.llvm.org/D92309
Files:
llvm/include/llvm/IR/LegacyPassManagers.h
llvm/lib/IR/LegacyPassManager.cpp
Index: llvm/lib/IR/LegacyPassManager.cpp
===================================================================
--- llvm/lib/IR/LegacyPassManager.cpp
+++ llvm/lib/IR/LegacyPassManager.cpp
@@ -568,7 +568,12 @@
PDepth = P->getResolver()->getPMDataManager().getDepth();
for (Pass *AP : AnalysisPasses) {
- LastUser[AP] = P;
+ // Record P as the new last user of AP.
+ auto &LastUserOfAP = LastUser[AP];
+ if (LastUserOfAP)
+ InversedLastUser[LastUserOfAP].erase(AP);
+ LastUserOfAP = P;
+ InversedLastUser[P].insert(AP);
if (P == AP)
continue;
@@ -598,13 +603,13 @@
if (P->getResolver())
setLastUser(LastPMUses, P->getResolver()->getPMDataManager().getAsPass());
-
// If AP is the last user of other passes then make P last user of
// such passes.
- for (auto &LU : LastUser) {
- if (LU.second == AP)
- LU.second = P;
- }
+ auto &LastUsedByAP = InversedLastUser[AP];
+ for (Pass *L : LastUsedByAP)
+ LastUser[L] = P;
+ InversedLastUser[P].insert(LastUsedByAP.begin(), LastUsedByAP.end());
+ LastUsedByAP.clear();
}
}
@@ -850,11 +855,6 @@
// Initailize other pass managers
for (PMDataManager *IPM : IndirectPassManagers)
IPM->initializeAnalysisInfo();
-
- for (auto LU : LastUser) {
- SmallPtrSet<Pass *, 8> &L = InversedLastUser[LU.second];
- L.insert(LU.first);
- }
}
/// Destructor
@@ -1151,6 +1151,8 @@
// Print list of passes that are last used by P.
void PMDataManager::dumpLastUses(Pass *P, unsigned Offset) const{
+ if (PassDebugging < Details)
+ return;
SmallVector<Pass *, 12> LUses;
Index: llvm/include/llvm/IR/LegacyPassManagers.h
===================================================================
--- llvm/include/llvm/IR/LegacyPassManagers.h
+++ llvm/include/llvm/IR/LegacyPassManagers.h
@@ -230,11 +230,11 @@
// Map to keep track of last user of the analysis pass.
// LastUser->second is the last user of Lastuser->first.
+ // This is kept in sync with InversedLastUser.
DenseMap<Pass *, Pass *> LastUser;
// Map to keep track of passes that are last used by a pass.
- // This inverse map is initialized at PM->run() based on
- // LastUser map.
+ // This is kept in sync with LastUser.
DenseMap<Pass *, SmallPtrSet<Pass *, 8> > InversedLastUser;
/// Immutable passes are managed by top level manager.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D92309.317888.patch
Type: text/x-patch
Size: 2388 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210120/3c646a0c/attachment.bin>
More information about the llvm-commits
mailing list