[llvm] c6be4ff - [PredicateInfo] Don't use depth first walk (NFCI) (#145016)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 23 00:09:23 PDT 2025
Author: Nikita Popov
Date: 2025-06-23T09:09:19+02:00
New Revision: c6be4ff0c8966c4dbe1cbac9a071762982a70651
URL: https://github.com/llvm/llvm-project/commit/c6be4ff0c8966c4dbe1cbac9a071762982a70651
DIFF: https://github.com/llvm/llvm-project/commit/c6be4ff0c8966c4dbe1cbac9a071762982a70651.diff
LOG: [PredicateInfo] Don't use depth first walk (NFCI) (#145016)
The order in which we collect the predicates does not matter, as they
will be sorted anyway. As such, avoid the expensive depth first walk
over the dominator tree and instead use plain iteration over the
function.
(To be a bit more precise, the predicates and uses for a specific value
are sorted, so this change has no impact on that. It can change the
order in which values are processed in the first place, but that order
is not semantically relevant.)
Added:
Modified:
llvm/lib/Transforms/Utils/PredicateInfo.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Utils/PredicateInfo.cpp b/llvm/lib/Transforms/Utils/PredicateInfo.cpp
index 97f13e3b26746..b57d41906ef09 100644
--- a/llvm/lib/Transforms/Utils/PredicateInfo.cpp
+++ b/llvm/lib/Transforms/Utils/PredicateInfo.cpp
@@ -453,17 +453,19 @@ void PredicateInfoBuilder::buildPredicateInfo() {
// Collect operands to rename from all conditional branch terminators, as well
// as assume statements.
SmallVector<Value *, 8> OpsToRename;
- for (auto *DTN : depth_first(DT.getRootNode())) {
- BasicBlock *BranchBB = DTN->getBlock();
- if (auto *BI = dyn_cast<BranchInst>(BranchBB->getTerminator())) {
+ for (BasicBlock &BB : F) {
+ if (!DT.isReachableFromEntry(&BB))
+ continue;
+
+ if (auto *BI = dyn_cast<BranchInst>(BB.getTerminator())) {
if (!BI->isConditional())
continue;
// Can't insert conditional information if they all go to the same place.
if (BI->getSuccessor(0) == BI->getSuccessor(1))
continue;
- processBranch(BI, BranchBB, OpsToRename);
- } else if (auto *SI = dyn_cast<SwitchInst>(BranchBB->getTerminator())) {
- processSwitch(SI, BranchBB, OpsToRename);
+ processBranch(BI, &BB, OpsToRename);
+ } else if (auto *SI = dyn_cast<SwitchInst>(BB.getTerminator())) {
+ processSwitch(SI, &BB, OpsToRename);
}
}
for (auto &Assume : AC.assumptions()) {
More information about the llvm-commits
mailing list