From: Sanjoy Das Date: Tue, 25 Apr 2017 06:53:25 +0000 (+0000) Subject: [IVUsers] Don't bail out of normalizing non-affine add recs X-Git-Tag: llvmorg-5.0.0-rc1~6754 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=561247a8238a094bc4aa35376a2fd076bef51fe6;p=platform%2Fupstream%2Fllvm.git [IVUsers] Don't bail out of normalizing non-affine add recs Summary: In a previous change I changed SCEV's normalization / denormalization to work with non-affine add recs. So the bailout in IVUsers can be removed. Reviewers: atrick, efriedma Reviewed By: atrick Subscribers: davide, mcrosier, llvm-commits Differential Revision: https://reviews.llvm.org/D32105 llvm-svn: 301298 --- diff --git a/llvm/lib/Analysis/IVUsers.cpp b/llvm/lib/Analysis/IVUsers.cpp index fde805a..c30feb9 100644 --- a/llvm/lib/Analysis/IVUsers.cpp +++ b/llvm/lib/Analysis/IVUsers.cpp @@ -253,18 +253,8 @@ bool IVUsers::AddUsersImpl(Instruction *I, 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; diff --git a/llvm/test/Analysis/IVUsers/quadradic-exit-value.ll b/llvm/test/Analysis/IVUsers/quadradic-exit-value.ll index 214afcb..6d4f1b0 100644 --- a/llvm/test/Analysis/IVUsers/quadradic-exit-value.ll +++ b/llvm/test/Analysis/IVUsers/quadradic-exit-value.ll @@ -36,7 +36,7 @@ exit: ; 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)),+,33554432}<%test2.loop> in %f = ashr i32 %sext.us, 24 +; CHECK-NO-LCSSA: %sext.us = {0,+,(16777216 + (-16777216 * %sub.us)),+,33554432}<%test2.loop> (post-inc with loop %test2.loop) in %f = ashr i32 %sext.us, 24 define i32 @test2() { entry: br label %test2.loop