[PATCH] D146999: [LV][NFC] Improve complexity of fixing users of recurrences
Michael Maitland via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 6 16:13:58 PDT 2023
michaelmaitland updated this revision to Diff 511553.
michaelmaitland added a comment.
Remove `llvm::`
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D146999/new/
https://reviews.llvm.org/D146999
Files:
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
Index: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
===================================================================
--- llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -3890,12 +3890,16 @@
// had multiple exiting edges (as we always run the last iteration in the
// scalar epilogue); in that case, there is no edge from middle to exit and
// and thus no phis which needed updated.
- if (!Cost->requiresScalarEpilogue(VF))
- for (PHINode &LCSSAPhi : LoopExitBlock->phis())
- if (llvm::is_contained(LCSSAPhi.incoming_values(), Phi)) {
- LCSSAPhi.addIncoming(ExtractForPhiUsedOutsideLoop, LoopMiddleBlock);
- State.Plan->removeLiveOut(&LCSSAPhi);
- }
+ if (!Cost->requiresScalarEpilogue(VF)) {
+ SmallPtrSet<PHINode *, 2> ToFix;
+ for (User *U : Phi->users())
+ if (isa<PHINode>(U) && cast<Instruction>(U)->getParent() == LoopExitBlock)
+ ToFix.insert(cast<PHINode>(U));
+ for (PHINode *LCSSAPhi : ToFix) {
+ LCSSAPhi->addIncoming(ExtractForPhiUsedOutsideLoop, LoopMiddleBlock);
+ State.Plan->removeLiveOut(LCSSAPhi);
+ }
+ }
}
void InnerLoopVectorizer::fixReduction(VPReductionPHIRecipe *PhiR,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D146999.511553.patch
Type: text/x-patch
Size: 1231 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230406/d4e18d3b/attachment.bin>
More information about the llvm-commits
mailing list