[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