[llvm-branch-commits] [llvm] 67f9c87 - [NFC][SimplifyCFG] Perform early-continue in FoldValueComparisonIntoPredecessors() per-pred loop
Roman Lebedev via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Sat Jan 23 13:59:39 PST 2021
Author: Roman Lebedev
Date: 2021-01-24T00:54:54+03:00
New Revision: 67f9c87a651a9c3a57a2b1bf32e6e0be2479ebc7
URL: https://github.com/llvm/llvm-project/commit/67f9c87a651a9c3a57a2b1bf32e6e0be2479ebc7
DIFF: https://github.com/llvm/llvm-project/commit/67f9c87a651a9c3a57a2b1bf32e6e0be2479ebc7.diff
LOG: [NFC][SimplifyCFG] Perform early-continue in FoldValueComparisonIntoPredecessors() per-pred loop
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 318e6d5cf810..6dab65d3f063 100644
--- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
@@ -1273,24 +1273,27 @@ bool SimplifyCFGOpt::FoldValueComparisonIntoPredecessors(Instruction *TI,
SmallSetVector<BasicBlock *, 16> Preds(pred_begin(BB), pred_end(BB));
while (!Preds.empty()) {
BasicBlock *Pred = Preds.pop_back_val();
+ Instruction *PTI = Pred->getTerminator();
+
+ // Don't try to fold into itself.
+ if (Pred == BB)
+ continue;
// See if the predecessor is a comparison with the same value.
- Instruction *PTI = Pred->getTerminator();
Value *PCV = isValueEqualityComparison(PTI); // PredCondVal
+ if (PCV != CV)
+ continue;
- if (PCV == CV && TI != PTI) {
- SmallSetVector<BasicBlock*, 4> FailBlocks;
- if (!SafeToMergeTerminators(TI, PTI, &FailBlocks)) {
- for (auto *Succ : FailBlocks) {
- if (!SplitBlockPredecessors(Succ, TI->getParent(), ".fold.split",
- DTU))
- return false;
- }
+ SmallSetVector<BasicBlock *, 4> FailBlocks;
+ if (!SafeToMergeTerminators(TI, PTI, &FailBlocks)) {
+ for (auto *Succ : FailBlocks) {
+ if (!SplitBlockPredecessors(Succ, TI->getParent(), ".fold.split", DTU))
+ return false;
}
-
- PerformValueComparisonIntoPredecessorFolding(TI, CV, PTI, Builder);
- Changed = true;
}
+
+ PerformValueComparisonIntoPredecessorFolding(TI, CV, PTI, Builder);
+ Changed = true;
}
return Changed;
}
More information about the llvm-branch-commits
mailing list