[llvm] 8fc8c74 - [NFCI][SimplifyCFG] PerformValueComparisonIntoPredecessorFolding(): improve Dominator Tree updating
Roman Lebedev via llvm-commits
llvm-commits at lists.llvm.org
Sun Apr 11 13:56:52 PDT 2021
Author: Roman Lebedev
Date: 2021-04-11T23:56:23+03:00
New Revision: 8fc8c745cffb1a7ae3a8ed5d0a4962b193d7cd78
URL: https://github.com/llvm/llvm-project/commit/8fc8c745cffb1a7ae3a8ed5d0a4962b193d7cd78
DIFF: https://github.com/llvm/llvm-project/commit/8fc8c745cffb1a7ae3a8ed5d0a4962b193d7cd78.diff
LOG: [NFCI][SimplifyCFG] PerformValueComparisonIntoPredecessorFolding(): improve Dominator Tree updating
Same as with previous patches.
Added:
Modified:
llvm/lib/Transforms/Utils/SimplifyCFG.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
index 11ca7d09e0cb..7f4736c4b550 100644
--- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
@@ -1115,7 +1115,7 @@ bool SimplifyCFGOpt::PerformValueComparisonIntoPredecessorFolding(
BasicBlock *BB = TI->getParent();
BasicBlock *Pred = PTI->getParent();
- std::vector<DominatorTree::UpdateType> Updates;
+ SmallVector<DominatorTree::UpdateType, 32> Updates;
// Figure out which 'cases' to copy from SI to PSI.
std::vector<ValueEqualityComparisonCase> BBCases;
@@ -1256,13 +1256,18 @@ bool SimplifyCFGOpt::PerformValueComparisonIntoPredecessorFolding(
// Okay, at this point, we know which new successor Pred will get. Make
// sure we update the number of entries in the PHI nodes for these
// successors.
+ SmallPtrSet<BasicBlock *, 2> SuccsOfPred;
+ if (DTU) {
+ SuccsOfPred = {succ_begin(Pred), succ_end(Pred)};
+ Updates.reserve(Updates.size() + NewSuccessors.size());
+ }
for (const std::pair<BasicBlock *, int /*Num*/> &NewSuccessor :
NewSuccessors) {
for (auto I : seq(0, NewSuccessor.second)) {
(void)I;
AddPredecessorToBlock(NewSuccessor.first, Pred, BB);
}
- if (DTU && !is_contained(successors(Pred), NewSuccessor.first))
+ if (DTU && !SuccsOfPred.contains(NewSuccessor.first))
Updates.push_back({DominatorTree::Insert, Pred, NewSuccessor.first});
}
More information about the llvm-commits
mailing list