[llvm] [LAA] Avoid stray predicates from replaceSymStrides (PR #216350)

Ramkumar Ramachandra via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 1 07:53:27 PDT 2026


================
@@ -918,3 +918,65 @@ loop:
 exit:
   ret void
 }
+
+define void @dropped_predicates(ptr %a, ptr %b, i64 %c, i64 %d, i64 %n) {
----------------
artagnon wrote:

This is actually the test that you provided for my error:

```diff
diff --git a/llvm/lib/Analysis/LoopAccessAnalysis.cpp b/llvm/lib/Analysis/LoopAccessAnalysis.cpp
index 75d5fb97030d..5089ca143be7 100644
--- a/llvm/lib/Analysis/LoopAccessAnalysis.cpp
+++ b/llvm/lib/Analysis/LoopAccessAnalysis.cpp
@@ -172,7 +172,7 @@ const SCEV *llvm::replaceSymbolicStrideSCEV(
   const SCEVPredicate *EqPred = SE->getEqualPredicate(StrideSCEV, CT);
   if (Predicates) {
     Predicates->push_back(EqPred);
-    Expr = SE->rewriteUsingPredicate(OrigSCEV, Lp,
+    Expr = SE->rewriteUsingPredicate(SE->getSCEV(Ptr), Lp,
                                      SCEVUnionPredicate(*Predicates, *SE));
   } else {
     PSE.addPredicate(*EqPred);
diff --git a/llvm/test/Analysis/LoopAccessAnalysis/symbolic-stride.ll b/llvm/test/Analysis/LoopAccessAnalysis/symbolic-stride.ll
index d3f8261d3032..ab3b36c25fb6 100644
--- a/llvm/test/Analysis/LoopAccessAnalysis/symbolic-stride.ll
+++ b/llvm/test/Analysis/LoopAccessAnalysis/symbolic-stride.ll
@@ -946,6 +946,8 @@ define void @dropped_predicates(ptr %a, ptr %b, i64 %c, i64 %d, i64 %n) {
 ; CHECK-NEXT:      Equal predicate: %d == 1
 ; CHECK-NEXT:      {(8 + %a),+,8}<%loop> Added Flags: <nusw>
 ; CHECK-NEXT:      {(12 + %a),+,8}<%loop> Added Flags: <nusw>
+; CHECK-NEXT:      {(4 + (8 * %d) + %a),+,8}<%loop> Added Flags: <nusw>
+; CHECK-NEXT:      {((8 * %d) + %a),+,8}<%loop> Added Flags: <nusw>
 ; CHECK-EMPTY:
 ; CHECK-NEXT:      Expressions re-written:
 ; CHECK-NEXT:      [PSE] %gep.b.mul = getelementptr i32, ptr %b, i64 %mul:
```

I agree that dropped_predicates is a poor name, but I can't think of a better name to describe this? Maybe stray_predicates? I don't even know what we'd write if we want to add a more descriptive comment?

https://github.com/llvm/llvm-project/pull/216350


More information about the llvm-commits mailing list