[PATCH] D32105: [IVUsers] don't bail out of normalizing non-affine add recs
Sanjoy Das via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 25 00:06:29 PDT 2017
This revision was automatically updated to reflect the committed changes.
Closed by commit rL301298: [IVUsers] Don't bail out of normalizing non-affine add recs (authored by sanjoy).
Changed prior to commit:
https://reviews.llvm.org/D32105?vs=95366&id=96508#toc
Repository:
rL LLVM
https://reviews.llvm.org/D32105
Files:
llvm/trunk/lib/Analysis/IVUsers.cpp
llvm/trunk/test/Analysis/IVUsers/quadradic-exit-value.ll
Index: llvm/trunk/lib/Analysis/IVUsers.cpp
===================================================================
--- llvm/trunk/lib/Analysis/IVUsers.cpp
+++ llvm/trunk/lib/Analysis/IVUsers.cpp
@@ -253,18 +253,8 @@
const SCEV *OriginalISE = ISE;
auto NormalizePred = [&](const SCEVAddRecExpr *AR) {
- // We only allow affine AddRecs to be normalized, otherwise we would not
- // be able to correctly denormalize.
- // e.g. {1,+,3,+,2} == {-2,+,1,+,2} + {3,+,2}
- // Normalized form: {-2,+,1,+,2}
- // Denormalized form: {1,+,3,+,2}
- //
- // However, denormalization would use a different step expression than
- // normalization (see getPostIncExpr), generating the wrong final
- // expression: {-2,+,1,+,2} + {1,+,2} => {-1,+,3,+,2}
auto *L = AR->getLoop();
- bool Result =
- AR->isAffine() && IVUseShouldUsePostIncValue(User, I, L, DT);
+ bool Result = IVUseShouldUsePostIncValue(User, I, L, DT);
if (Result)
NewUse.PostIncLoops.insert(L);
return Result;
Index: llvm/trunk/test/Analysis/IVUsers/quadradic-exit-value.ll
===================================================================
--- llvm/trunk/test/Analysis/IVUsers/quadradic-exit-value.ll
+++ llvm/trunk/test/Analysis/IVUsers/quadradic-exit-value.ll
@@ -36,7 +36,7 @@
; sure they aren't marked as post-inc users.
;
; CHECK-LABEL: IV Users for loop %test2.loop
-; CHECK-NO-LCSSA: %sext.us = {0,+,(16777216 + (-16777216 * %sub.us))<nuw><nsw>,+,33554432}<%test2.loop> in %f = ashr i32 %sext.us, 24
+; CHECK-NO-LCSSA: %sext.us = {0,+,(16777216 + (-16777216 * %sub.us))<nuw><nsw>,+,33554432}<%test2.loop> (post-inc with loop %test2.loop) in %f = ashr i32 %sext.us, 24
define i32 @test2() {
entry:
br label %test2.loop
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D32105.96508.patch
Type: text/x-patch
Size: 1826 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170425/8c04ce80/attachment.bin>
More information about the llvm-commits
mailing list