[llvm] 681dbf9 - [WinEH] Use removeIncomingValueIf() in UpdatePHIOnClonedBlock() (NFC) (#171962)
via llvm-commits
llvm-commits at lists.llvm.org
Sat Dec 13 17:41:18 PST 2025
Author: Mingjie Xu
Date: 2025-12-14T09:41:13+08:00
New Revision: 681dbf99414f7917a9447da786e6fecb8437f2cb
URL: https://github.com/llvm/llvm-project/commit/681dbf99414f7917a9447da786e6fecb8437f2cb
DIFF: https://github.com/llvm/llvm-project/commit/681dbf99414f7917a9447da786e6fecb8437f2cb.diff
LOG: [WinEH] Use removeIncomingValueIf() in UpdatePHIOnClonedBlock() (NFC) (#171962)
Added:
Modified:
llvm/lib/CodeGen/WinEHPrepare.cpp
Removed:
################################################################################
diff --git a/llvm/lib/CodeGen/WinEHPrepare.cpp b/llvm/lib/CodeGen/WinEHPrepare.cpp
index 66d29cb5d65e4..372fc50eb546e 100644
--- a/llvm/lib/CodeGen/WinEHPrepare.cpp
+++ b/llvm/lib/CodeGen/WinEHPrepare.cpp
@@ -1014,29 +1014,26 @@ bool WinEHPrepareImpl::cloneCommonBlocks(Function &F) {
}
auto UpdatePHIOnClonedBlock = [&](PHINode *PN, bool IsForOldBlock) {
- unsigned NumPreds = PN->getNumIncomingValues();
- for (unsigned PredIdx = 0, PredEnd = NumPreds; PredIdx != PredEnd;
- ++PredIdx) {
- BasicBlock *IncomingBlock = PN->getIncomingBlock(PredIdx);
- bool EdgeTargetsFunclet;
- if (auto *CRI =
- dyn_cast<CatchReturnInst>(IncomingBlock->getTerminator())) {
- EdgeTargetsFunclet = (CRI->getCatchSwitchParentPad() == FuncletToken);
- } else {
- ColorVector &IncomingColors = BlockColors[IncomingBlock];
- assert(!IncomingColors.empty() && "Block not colored!");
- assert((IncomingColors.size() == 1 ||
- !llvm::is_contained(IncomingColors, FuncletPadBB)) &&
- "Cloning should leave this funclet's blocks monochromatic");
- EdgeTargetsFunclet = (IncomingColors.front() == FuncletPadBB);
- }
- if (IsForOldBlock != EdgeTargetsFunclet)
- continue;
- PN->removeIncomingValue(IncomingBlock, /*DeletePHIIfEmpty=*/false);
- // Revisit the next entry.
- --PredIdx;
- --PredEnd;
- }
+ PN->removeIncomingValueIf(
+ [&](unsigned Idx) {
+ BasicBlock *IncomingBlock = PN->getIncomingBlock(Idx);
+ bool EdgeTargetsFunclet;
+ if (auto *CRI =
+ dyn_cast<CatchReturnInst>(IncomingBlock->getTerminator())) {
+ EdgeTargetsFunclet =
+ (CRI->getCatchSwitchParentPad() == FuncletToken);
+ } else {
+ ColorVector &IncomingColors = BlockColors[IncomingBlock];
+ assert(!IncomingColors.empty() && "Block not colored!");
+ assert(
+ (IncomingColors.size() == 1 ||
+ !llvm::is_contained(IncomingColors, FuncletPadBB)) &&
+ "Cloning should leave this funclet's blocks monochromatic");
+ EdgeTargetsFunclet = (IncomingColors.front() == FuncletPadBB);
+ }
+ return IsForOldBlock == EdgeTargetsFunclet;
+ },
+ /*DeletePHIIfEmpty=*/false);
};
for (auto &BBMapping : Orig2Clone) {
More information about the llvm-commits
mailing list