[llvm-branch-commits] [llvm] [DA] Add nsw check for addrecs in the Weak Zero SIV tests (PR #185579)

Ryotaro Kasuga via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Mon Mar 9 23:04:30 PDT 2026


https://github.com/kasuga-fj updated https://github.com/llvm/llvm-project/pull/185579

>From d140ee5e8872dc7bff31fa79a66aad6059a6c0c3 Mon Sep 17 00:00:00 2001
From: Ryotaro Kasuga <kasuga.ryotaro at fujitsu.com>
Date: Mon, 9 Mar 2026 09:22:33 +0000
Subject: [PATCH] [DA] Add nsw check for addrecs in the Weak Zero SIV tests

---
 llvm/lib/Analysis/DependenceAnalysis.cpp                  | 3 +++
 .../DependenceAnalysis/weak-zero-siv-addrec-wrap.ll       | 8 ++++----
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/llvm/lib/Analysis/DependenceAnalysis.cpp b/llvm/lib/Analysis/DependenceAnalysis.cpp
index ed0a19b3332fd..9326534e954bd 100644
--- a/llvm/lib/Analysis/DependenceAnalysis.cpp
+++ b/llvm/lib/Analysis/DependenceAnalysis.cpp
@@ -1799,6 +1799,9 @@ bool DependenceInfo::weakZeroSIVtestImpl(const SCEVAddRecExpr *AR,
     return true;
   }
 
+  if (!AR->hasNoSignedWrap())
+    return false;
+
   if (Const == ARConst && SE->isKnownNonZero(ARCoeff)) {
     if (Level < CommonLevels) {
       Result.DV[Level].Direction &= Dependence::DVEntry::LE;
diff --git a/llvm/test/Analysis/DependenceAnalysis/weak-zero-siv-addrec-wrap.ll b/llvm/test/Analysis/DependenceAnalysis/weak-zero-siv-addrec-wrap.ll
index fe571b2b7f334..0235acb8482ae 100644
--- a/llvm/test/Analysis/DependenceAnalysis/weak-zero-siv-addrec-wrap.ll
+++ b/llvm/test/Analysis/DependenceAnalysis/weak-zero-siv-addrec-wrap.ll
@@ -28,13 +28,13 @@ define void @weak_zero_src_siv_addrec_wrap(ptr %A, i64 %n) {
 ; CHECK-ALL-NEXT:  Src: store i8 0, ptr %gep.0, align 1 --> Dst: store i8 1, ptr %gep.1, align 1
 ; CHECK-ALL-NEXT:    da analyze - none!
 ; CHECK-ALL-NEXT:  Src: store i8 1, ptr %gep.1, align 1 --> Dst: store i8 1, ptr %gep.1, align 1
-; CHECK-ALL-NEXT:    da analyze - none!
+; CHECK-ALL-NEXT:    da analyze - output [*]!
 ;
 ; CHECK-WEAK-ZERO-SIV-LABEL: 'weak_zero_src_siv_addrec_wrap'
 ; CHECK-WEAK-ZERO-SIV-NEXT:  Src: store i8 0, ptr %gep.0, align 1 --> Dst: store i8 0, ptr %gep.0, align 1
 ; CHECK-WEAK-ZERO-SIV-NEXT:    da analyze - output [S]!
 ; CHECK-WEAK-ZERO-SIV-NEXT:  Src: store i8 0, ptr %gep.0, align 1 --> Dst: store i8 1, ptr %gep.1, align 1
-; CHECK-WEAK-ZERO-SIV-NEXT:    da analyze - none!
+; CHECK-WEAK-ZERO-SIV-NEXT:    da analyze - output [*|<]!
 ; CHECK-WEAK-ZERO-SIV-NEXT:  Src: store i8 1, ptr %gep.1, align 1 --> Dst: store i8 1, ptr %gep.1, align 1
 ; CHECK-WEAK-ZERO-SIV-NEXT:    da analyze - output [*]!
 ;
@@ -84,7 +84,7 @@ exit:
 define void @weak_zero_dst_siv_addrec_wrap(ptr %A, i64 %n) {
 ; CHECK-ALL-LABEL: 'weak_zero_dst_siv_addrec_wrap'
 ; CHECK-ALL-NEXT:  Src: store i8 0, ptr %gep.0, align 1 --> Dst: store i8 0, ptr %gep.0, align 1
-; CHECK-ALL-NEXT:    da analyze - none!
+; CHECK-ALL-NEXT:    da analyze - output [*]!
 ; CHECK-ALL-NEXT:  Src: store i8 0, ptr %gep.0, align 1 --> Dst: store i8 1, ptr %gep.1, align 1
 ; CHECK-ALL-NEXT:    da analyze - none!
 ; CHECK-ALL-NEXT:  Src: store i8 1, ptr %gep.1, align 1 --> Dst: store i8 1, ptr %gep.1, align 1
@@ -94,7 +94,7 @@ define void @weak_zero_dst_siv_addrec_wrap(ptr %A, i64 %n) {
 ; CHECK-WEAK-ZERO-SIV-NEXT:  Src: store i8 0, ptr %gep.0, align 1 --> Dst: store i8 0, ptr %gep.0, align 1
 ; CHECK-WEAK-ZERO-SIV-NEXT:    da analyze - output [*]!
 ; CHECK-WEAK-ZERO-SIV-NEXT:  Src: store i8 0, ptr %gep.0, align 1 --> Dst: store i8 1, ptr %gep.1, align 1
-; CHECK-WEAK-ZERO-SIV-NEXT:    da analyze - none!
+; CHECK-WEAK-ZERO-SIV-NEXT:    da analyze - output [*|<]!
 ; CHECK-WEAK-ZERO-SIV-NEXT:  Src: store i8 1, ptr %gep.1, align 1 --> Dst: store i8 1, ptr %gep.1, align 1
 ; CHECK-WEAK-ZERO-SIV-NEXT:    da analyze - output [S]!
 ;



More information about the llvm-branch-commits mailing list