[llvm-branch-commits] [llvm] e8360a8 - [NFC][SimplifyCFG] FoldBranchToCommonDest(): pull out 'common successor' into a variable
Roman Lebedev via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Dec 14 09:19:49 PST 2020
Author: Roman Lebedev
Date: 2020-12-14T20:14:31+03:00
New Revision: e8360a8e1e78edded1f6e95a7fdbac55fe42285f
URL: https://github.com/llvm/llvm-project/commit/e8360a8e1e78edded1f6e95a7fdbac55fe42285f
DIFF: https://github.com/llvm/llvm-project/commit/e8360a8e1e78edded1f6e95a7fdbac55fe42285f.diff
LOG: [NFC][SimplifyCFG] FoldBranchToCommonDest(): pull out 'common successor' into a variable
Makes it easier to use it elsewhere
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 f2b7ffd67057..8f0ed2c46207 100644
--- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
@@ -2944,12 +2944,16 @@ bool llvm::FoldBranchToCommonDest(BranchInst *BI, MemorySSAUpdater *MSSAU,
// and non-PHI uses will become invalid.
FormTrivialSSAPHI(BB);
+ BasicBlock *UniqueSucc =
+ BI->isConditional()
+ ? (PBI->getSuccessor(0) == BB ? TrueDest : FalseDest)
+ : TrueDest;
+
// Before cloning instructions, notify the successor basic block that it
// is about to have a new predecessor. This will update PHI nodes,
// which will allow us to update live-out uses of bonus instructions.
if (BI->isConditional())
- AddPredecessorToBlock(PBI->getSuccessor(0) == BB ? TrueDest : FalseDest,
- PredBlock, BB, MSSAU);
+ AddPredecessorToBlock(UniqueSucc, PredBlock, BB, MSSAU);
// If we have bonus instructions, clone them into the predecessor block.
// Note that there may be multiple predecessor blocks, so we cannot move
@@ -3011,7 +3015,7 @@ bool llvm::FoldBranchToCommonDest(BranchInst *BI, MemorySSAUpdater *MSSAU,
if (PBI->getSuccessor(0) == BB) {
if (HasWeights) {
// PBI: br i1 %x, BB, FalseDest
- // BI: br i1 %y, TrueDest, FalseDest
+ // BI: br i1 %y, UniqueSucc, FalseDest
// TrueWeight is TrueWeight for PBI * TrueWeight for BI.
NewWeights.push_back(PredTrueWeight * SuccTrueWeight);
// FalseWeight is FalseWeight for PBI * TotalWeight for BI +
@@ -3022,12 +3026,12 @@ bool llvm::FoldBranchToCommonDest(BranchInst *BI, MemorySSAUpdater *MSSAU,
(SuccFalseWeight + SuccTrueWeight) +
PredTrueWeight * SuccFalseWeight);
}
- PBI->setSuccessor(0, TrueDest);
+ PBI->setSuccessor(0, UniqueSucc);
}
if (PBI->getSuccessor(1) == BB) {
if (HasWeights) {
// PBI: br i1 %x, TrueDest, BB
- // BI: br i1 %y, TrueDest, FalseDest
+ // BI: br i1 %y, TrueDest, UniqueSucc
// TrueWeight is TrueWeight for PBI * TotalWeight for BI +
// FalseWeight for PBI * TrueWeight for BI.
NewWeights.push_back(PredTrueWeight *
@@ -3036,7 +3040,7 @@ bool llvm::FoldBranchToCommonDest(BranchInst *BI, MemorySSAUpdater *MSSAU,
// FalseWeight is FalseWeight for PBI * FalseWeight for BI.
NewWeights.push_back(PredFalseWeight * SuccFalseWeight);
}
- PBI->setSuccessor(1, FalseDest);
+ PBI->setSuccessor(1, UniqueSucc);
}
if (NewWeights.size() == 2) {
// Halve the weights if any of them cannot fit in an uint32_t
@@ -3054,7 +3058,7 @@ bool llvm::FoldBranchToCommonDest(BranchInst *BI, MemorySSAUpdater *MSSAU,
PHIs[i]->getIncomingValueForBlock(PBI->getParent()));
assert(PBI_C->getType()->isIntegerTy(1));
Instruction *MergedCond = nullptr;
- if (PBI->getSuccessor(0) == TrueDest) {
+ if (PBI->getSuccessor(0) == UniqueSucc) {
// Create (PBI_Cond and PBI_C) or (!PBI_Cond and BI_Value)
// PBI_C is true: PBI_Cond or (!PBI_Cond and BI_Value)
// is false: !PBI_Cond and BI_Value
@@ -3083,13 +3087,13 @@ bool llvm::FoldBranchToCommonDest(BranchInst *BI, MemorySSAUpdater *MSSAU,
PHIs[i]->setIncomingValueForBlock(PBI->getParent(), MergedCond);
}
- // PBI is changed to branch to TrueDest below. Remove itself from
+ // PBI is changed to branch to UniqueSucc below. Remove itself from
// potential phis from all other successors.
if (MSSAU)
- MSSAU->changeCondBranchToUnconditionalTo(PBI, TrueDest);
+ MSSAU->changeCondBranchToUnconditionalTo(PBI, UniqueSucc);
// Change PBI from Conditional to Unconditional.
- BranchInst *New_PBI = BranchInst::Create(TrueDest, PBI);
+ BranchInst *New_PBI = BranchInst::Create(UniqueSucc, PBI);
EraseTerminatorAndDCECond(PBI, MSSAU);
PBI = New_PBI;
}
More information about the llvm-branch-commits
mailing list