[PATCH] D147944: [LV][NFC] Improve complexity of fixing users of reductions
Michael Maitland via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 10 09:39:56 PDT 2023
michaelmaitland updated this revision to Diff 512180.
michaelmaitland marked 2 inline comments as done.
michaelmaitland added a comment.
Use auto and dyn_cast
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D147944/new/
https://reviews.llvm.org/D147944
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
@@ -4100,12 +4100,18 @@
// We know that the loop is in LCSSA form. We need to update the PHI nodes
// in the exit blocks. See comment on analogous loop in
// fixFixedOrderRecurrence for a more complete explaination of the logic.
- if (!Cost->requiresScalarEpilogue(VF))
- for (PHINode &LCSSAPhi : LoopExitBlock->phis())
- if (llvm::is_contained(LCSSAPhi.incoming_values(), LoopExitInst)) {
- LCSSAPhi.addIncoming(ReducedPartRdx, LoopMiddleBlock);
- State.Plan->removeLiveOut(&LCSSAPhi);
- }
+ if (!Cost->requiresScalarEpilogue(VF)) {
+ SmallPtrSet<PHINode *, 2> ToFix;
+ auto *Phi = cast<PHINode>(PhiR->getUnderlyingValue());
+ for (User *U : Phi->users())
+ if (auto *UPhi = dyn_cast<PHINode>(U);
+ UPhi && UPhi->getParent() == LoopExitBlock)
+ ToFix.insert(UPhi);
+ for (PHINode *LCSSAPhi : ToFix) {
+ LCSSAPhi->addIncoming(ReducedPartRdx, LoopMiddleBlock);
+ State.Plan->removeLiveOut(LCSSAPhi);
+ }
+ }
// Fix the scalar loop reduction variable with the incoming reduction sum
// from the vector body and from the backedge value.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D147944.512180.patch
Type: text/x-patch
Size: 1355 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230410/c600145f/attachment.bin>
More information about the llvm-commits
mailing list