[llvm] [SCEV] Strip WrapPredicate::getImpliedFlags (NFC) (PR #225137)
Ramkumar Ramachandra via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 21 09:47:46 PDT 2026
https://github.com/artagnon created https://github.com/llvm/llvm-project/pull/225137
The code in SCEVWrapPredicate::getImplied is dead, as we would never add an increment wrap-predicate to begin with, when the much stronger invariant of nuw/nsw is available on the AddRec.
>From 99e2622ea4e77f2e2145b9e6196648124b352fbf Mon Sep 17 00:00:00 2001
From: Ramkumar Ramachandra <artagnon at tenstorrent.com>
Date: Mon, 21 Sep 2026 17:44:18 +0100
Subject: [PATCH] [SCEV] Strip WrapPredicate::getImpliedFlags (NFC)
The code in SCEVWrapPredicate::getImplied is dead, as we would never add
an increment wrap-predicate to begin with, when the much stronger
invariant of nuw/nsw is available on the AddRec.
---
llvm/include/llvm/Analysis/ScalarEvolution.h | 5 -----
llvm/lib/Analysis/LoopAccessAnalysis.cpp | 5 ++---
llvm/lib/Analysis/ScalarEvolution.cpp | 21 --------------------
3 files changed, 2 insertions(+), 29 deletions(-)
diff --git a/llvm/include/llvm/Analysis/ScalarEvolution.h b/llvm/include/llvm/Analysis/ScalarEvolution.h
index 7fddd4ca4119f..aaee1d003bdf6 100644
--- a/llvm/include/llvm/Analysis/ScalarEvolution.h
+++ b/llvm/include/llvm/Analysis/ScalarEvolution.h
@@ -547,11 +547,6 @@ class LLVM_ABI SCEVWrapPredicate final : public SCEVPredicate {
return (SCEVWrapPredicate::IncrementWrapFlags)(Flags | OnFlags);
}
- /// Returns the set of SCEVWrapPredicate no wrap flags implied by a
- /// SCEVAddRecExpr.
- [[nodiscard]] static SCEVWrapPredicate::IncrementWrapFlags
- getImpliedFlags(const SCEVAddRecExpr *AR, ScalarEvolution &SE);
-
private:
const SCEVAddRecExpr *AR;
IncrementWrapFlags Flags;
diff --git a/llvm/lib/Analysis/LoopAccessAnalysis.cpp b/llvm/lib/Analysis/LoopAccessAnalysis.cpp
index 437d25b3d56ed..d8bba5ac4d704 100644
--- a/llvm/lib/Analysis/LoopAccessAnalysis.cpp
+++ b/llvm/lib/Analysis/LoopAccessAnalysis.cpp
@@ -1146,9 +1146,8 @@ isNoWrap(PredicatedScalarEvolution &PSE, const SCEVAddRecExpr *AR, Value *Ptr,
if (Ptr && Predicates) {
ScalarEvolution &SE = *PSE.getSE();
- SCEVWrapPredicate::IncrementWrapFlags Flags = SCEVWrapPredicate::clearFlags(
- SCEVWrapPredicate::IncrementNUSW,
- SCEVWrapPredicate::getImpliedFlags(AR, SE));
+ SCEVWrapPredicate::IncrementWrapFlags Flags =
+ SCEVWrapPredicate::IncrementNUSW;
Predicates->push_back(SE.getWrapPredicate(AR, Flags));
LLVM_DEBUG(dbgs() << "LAA: Pointer may wrap:\n"
<< "LAA: Pointer: " << *Ptr << "\n"
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
index 50e0170b55089..5bc2b01a0f772 100644
--- a/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -15532,27 +15532,6 @@ void SCEVWrapPredicate::print(raw_ostream &OS, unsigned Depth) const {
OS << "\n";
}
-SCEVWrapPredicate::IncrementWrapFlags
-SCEVWrapPredicate::getImpliedFlags(const SCEVAddRecExpr *AR,
- ScalarEvolution &SE) {
- IncrementWrapFlags ImpliedFlags = IncrementAnyWrap;
- SCEV::NoWrapFlags StaticFlags = AR->getNoWrapFlags();
-
- // We can safely transfer the NSW flag as NSSW.
- if (ScalarEvolution::setFlags(StaticFlags, SCEV::FlagNSW) == StaticFlags)
- ImpliedFlags = IncrementNSSW;
-
- if (ScalarEvolution::setFlags(StaticFlags, SCEV::FlagNUW) == StaticFlags) {
- // If the increment is positive, the SCEV NUW flag will also imply the
- // WrapPredicate NUSW flag.
- if (const auto *Step = dyn_cast<SCEVConstant>(AR->getStepRecurrence(SE)))
- if (Step->getValue()->getValue().isNonNegative())
- ImpliedFlags = setFlags(ImpliedFlags, IncrementNUSW);
- }
-
- return ImpliedFlags;
-}
-
/// Union predicates don't get cached so create a dummy set ID for it.
SCEVUnionPredicate::SCEVUnionPredicate(ArrayRef<const SCEVPredicate *> Preds,
ScalarEvolution &SE)
More information about the llvm-commits
mailing list