[llvm] 64eeafa - [DA] Check nsw flags for addrecs in the Exact RDIV test (#189536)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 31 02:13:05 PDT 2026
Author: Ruoyu Qiu
Date: 2026-03-31T09:12:57Z
New Revision: 64eeafad7090d71f809f8e1806ad3b141f8de026
URL: https://github.com/llvm/llvm-project/commit/64eeafad7090d71f809f8e1806ad3b141f8de026
DIFF: https://github.com/llvm/llvm-project/commit/64eeafad7090d71f809f8e1806ad3b141f8de026.diff
LOG: [DA] Check nsw flags for addrecs in the Exact RDIV test (#189536)
This patch adds a check to ensure that the addrecs have nsw flags at the
beginning of the Exact SIV test. If either of them doesn't have, the
analysis bails out. This check is necessary because the subsequent
process in the Exact SIV test assumes that they don't wrap.
Added:
Modified:
llvm/lib/Analysis/DependenceAnalysis.cpp
llvm/test/Analysis/DependenceAnalysis/exact-rdiv-addrec-wrap.ll
Removed:
################################################################################
diff --git a/llvm/lib/Analysis/DependenceAnalysis.cpp b/llvm/lib/Analysis/DependenceAnalysis.cpp
index 1734983569a8f..22e486a6d3b7d 100644
--- a/llvm/lib/Analysis/DependenceAnalysis.cpp
+++ b/llvm/lib/Analysis/DependenceAnalysis.cpp
@@ -1953,6 +1953,10 @@ bool DependenceInfo::exactRDIVtest(const SCEVAddRecExpr *Src,
LLVM_DEBUG(dbgs() << "\t SrcConst = " << *SrcConst << "\n");
LLVM_DEBUG(dbgs() << "\t DstConst = " << *DstConst << "\n");
++ExactRDIVapplications;
+
+ if (!Src->hasNoSignedWrap() || !Dst->hasNoSignedWrap())
+ return false;
+
const SCEV *Delta = SE->getMinusSCEV(DstConst, SrcConst);
LLVM_DEBUG(dbgs() << "\t Delta = " << *Delta << "\n");
const SCEVConstant *ConstDelta = dyn_cast<SCEVConstant>(Delta);
diff --git a/llvm/test/Analysis/DependenceAnalysis/exact-rdiv-addrec-wrap.ll b/llvm/test/Analysis/DependenceAnalysis/exact-rdiv-addrec-wrap.ll
index 0fccef544d2ac..5805d19d01bbe 100644
--- a/llvm/test/Analysis/DependenceAnalysis/exact-rdiv-addrec-wrap.ll
+++ b/llvm/test/Analysis/DependenceAnalysis/exact-rdiv-addrec-wrap.ll
@@ -38,7 +38,7 @@ define void @exact_rdiv_no_nsw(ptr %A) {
; CHECK-EXACT-RDIV-NEXT: Src: store i8 0, ptr %gep.0, align 1 --> Dst: store i8 0, ptr %gep.0, align 1
; CHECK-EXACT-RDIV-NEXT: da analyze - output [*]!
; CHECK-EXACT-RDIV-NEXT: Src: store i8 0, ptr %gep.0, align 1 --> Dst: store i8 1, ptr %gep.1, align 1
-; CHECK-EXACT-RDIV-NEXT: da analyze - none!
+; CHECK-EXACT-RDIV-NEXT: da analyze - output [|<]!
; CHECK-EXACT-RDIV-NEXT: Src: store i8 1, ptr %gep.1, align 1 --> Dst: store i8 1, ptr %gep.1, align 1
; CHECK-EXACT-RDIV-NEXT: da analyze - output [*]!
;
More information about the llvm-commits
mailing list