[PATCH] D36408: [LV] Minor fixes to Sink casts to unravel first order recurrence
Ayal Zaks via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 7 09:27:41 PDT 2017
Ayal created this revision.
Herald added a subscriber: mzolotukhin.
Two minor fixes: avoid copying a map and avoid redundant motion.
https://reviews.llvm.org/D36408
Files:
lib/Transforms/Utils/LoopUtils.cpp
lib/Transforms/Vectorize/LoopVectorize.cpp
Index: lib/Transforms/Vectorize/LoopVectorize.cpp
===================================================================
--- lib/Transforms/Vectorize/LoopVectorize.cpp
+++ lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -7653,7 +7653,7 @@
// 2. Copy and widen instructions from the old loop into the new loop.
// Move instructions to handle first-order recurrences.
- DenseMap<Instruction *, Instruction *> SinkAfter = Legal->getSinkAfter();
+ DenseMap<Instruction *, Instruction *> &SinkAfter = Legal->getSinkAfter();
for (auto &Entry : SinkAfter) {
Entry.first->removeFromParent();
Entry.first->insertAfter(Entry.second);
Index: lib/Transforms/Utils/LoopUtils.cpp
===================================================================
--- lib/Transforms/Utils/LoopUtils.cpp
+++ lib/Transforms/Utils/LoopUtils.cpp
@@ -565,7 +565,8 @@
auto *I = Phi->user_back();
if (I->isCast() && (I->getParent() == Phi->getParent()) && I->hasOneUse() &&
DT->dominates(Previous, I->user_back())) {
- SinkAfter[I] = Previous;
+ if (!DT->dominates(Previous, I)) // Otherwise we're good w/o sinking.
+ SinkAfter[I] = Previous;
return true;
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D36408.110018.patch
Type: text/x-patch
Size: 1192 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170807/7cce4246/attachment.bin>
More information about the llvm-commits
mailing list