https://github.com/kasuga-fj updated https://github.com/llvm/llvm-project/pull/185580
>From 4c5b5ca1be6b30a39f307aaa23dc3480c7ffdae1 Mon Sep 17 00:00:00 2001 From: Ryotaro Kasuga <[email protected]> Date: Mon, 9 Mar 2026 10:12:39 +0000 Subject: [PATCH] [DA] Remove absolute value calculations in the Weak Zero SIV tests --- llvm/lib/Analysis/DependenceAnalysis.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/llvm/lib/Analysis/DependenceAnalysis.cpp b/llvm/lib/Analysis/DependenceAnalysis.cpp index 5d800527137b5..3cb6e22ad3a14 100644 --- a/llvm/lib/Analysis/DependenceAnalysis.cpp +++ b/llvm/lib/Analysis/DependenceAnalysis.cpp @@ -1828,19 +1828,19 @@ bool DependenceInfo::weakZeroSIVtestImpl(const SCEVAddRecExpr *AR, if (!ConstCoeff) return false; - // Since ConstCoeff is constant, !isKnownNegative means it's non-negative. - // TODO: Bail out if it's a signed minimum value. - const SCEV *AbsCoeff = SE->isKnownNegative(ConstCoeff) - ? SE->getNegativeSCEV(ConstCoeff) - : ConstCoeff; const SCEV *NewDelta = SE->isKnownNegative(ConstCoeff) ? SE->getNegativeSCEV(Delta) : Delta; if (const SCEV *UpperBound = collectUpperBound(AR->getLoop(), Delta->getType())) { LLVM_DEBUG(dbgs() << "\t UpperBound = " << *UpperBound << "\n"); - const SCEV *Product = SE->getMulExpr(AbsCoeff, UpperBound); - if (SE->isKnownPredicate(CmpInst::ICMP_EQ, NewDelta, Product)) { + bool OverlapAtLast = [&] { + if (!SE->isKnownNonZero(ConstCoeff)) + return false; + const SCEV *Last = AR->evaluateAtIteration(UpperBound, *SE); + return Last == Const; + }(); + if (OverlapAtLast) { // dependences caused by last iteration if (Level < CommonLevels) { Result.DV[Level].Direction &= Dependence::DVEntry::GE; _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
