[llvm] c02deae - [SCEVPredicate] Remove getExpr mechanism [NFC]
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Fri Feb 11 11:36:10 PST 2022
Author: Philip Reames
Date: 2022-02-11T11:35:58-08:00
New Revision: c02deae18cb26bb6d2d8c8a2fa1dd8b7e0dfda44
URL: https://github.com/llvm/llvm-project/commit/c02deae18cb26bb6d2d8c8a2fa1dd8b7e0dfda44
DIFF: https://github.com/llvm/llvm-project/commit/c02deae18cb26bb6d2d8c8a2fa1dd8b7e0dfda44.diff
LOG: [SCEVPredicate] Remove getExpr mechanism [NFC]
This mechanism was used for a couple of purposes, but the primary one was keeping track of which predicates in a union might apply to an expression. As these sets are small and agressively deduped, this has little value.
Added:
Modified:
llvm/include/llvm/Analysis/ScalarEvolution.h
llvm/lib/Analysis/ScalarEvolution.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/Analysis/ScalarEvolution.h b/llvm/include/llvm/Analysis/ScalarEvolution.h
index 4cafeff400a7..c224346442f1 100644
--- a/llvm/include/llvm/Analysis/ScalarEvolution.h
+++ b/llvm/include/llvm/Analysis/ScalarEvolution.h
@@ -246,10 +246,6 @@ class SCEVPredicate : public FoldingSetNode {
/// Prints a textual representation of this predicate with an indentation of
/// \p Depth.
virtual void print(raw_ostream &OS, unsigned Depth = 0) const = 0;
-
- /// Returns the SCEV to which this predicate applies, or nullptr if this is
- /// a SCEVUnionPredicate.
- virtual const SCEV *getExpr() const = 0;
};
inline raw_ostream &operator<<(raw_ostream &OS, const SCEVPredicate &P) {
@@ -293,7 +289,6 @@ class SCEVComparePredicate final : public SCEVPredicate {
bool implies(const SCEVPredicate *N) const override;
void print(raw_ostream &OS, unsigned Depth = 0) const override;
bool isAlwaysTrue() const override;
- const SCEV *getExpr() const override;
ICmpInst::Predicate getPredicate() const { return Pred; }
@@ -397,7 +392,7 @@ class SCEVWrapPredicate final : public SCEVPredicate {
IncrementWrapFlags getFlags() const { return Flags; }
/// Implementation of the SCEVPredicate interface
- const SCEV *getExpr() const override;
+ const SCEVAddRecExpr *getExpr() const;
bool implies(const SCEVPredicate *N) const override;
void print(raw_ostream &OS, unsigned Depth = 0) const override;
bool isAlwaysTrue() const override;
@@ -422,9 +417,6 @@ class SCEVUnionPredicate final : public SCEVPredicate {
/// Vector with references to all predicates in this union.
SmallVector<const SCEVPredicate *, 16> Preds;
- /// Maps SCEVs to predicates for quick look-ups.
- PredicateMap SCEVToPreds;
-
/// Adds a predicate to this union.
void add(const SCEVPredicate *N);
@@ -435,15 +427,10 @@ class SCEVUnionPredicate final : public SCEVPredicate {
return Preds;
}
- /// Returns a reference to a vector containing all predicates which apply to
- /// \p Expr.
- ArrayRef<const SCEVPredicate *> getPredicatesForExpr(const SCEV *Expr) const;
-
/// Implementation of the SCEVPredicate interface
bool isAlwaysTrue() const override;
bool implies(const SCEVPredicate *N) const override;
void print(raw_ostream &OS, unsigned Depth) const override;
- const SCEV *getExpr() const override;
/// We estimate the complexity of a union predicate as the size number of
/// predicates in the union.
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
index e3a01440baad..6170bb8a5db3 100644
--- a/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -13678,8 +13678,7 @@ class SCEVPredicateRewriter : public SCEVRewriteVisitor<SCEVPredicateRewriter> {
const SCEV *visitUnknown(const SCEVUnknown *Expr) {
if (Pred) {
if (auto *U = dyn_cast<SCEVUnionPredicate>(Pred)) {
- auto ExprPreds = U->getPredicatesForExpr(Expr);
- for (auto *Pred : ExprPreds)
+ for (auto *Pred : U->getPredicates())
if (const auto *IPred = dyn_cast<SCEVComparePredicate>(Pred))
if (IPred->getLHS() == Expr &&
IPred->getPredicate() == ICmpInst::ICMP_EQ)
@@ -13762,8 +13761,7 @@ class SCEVPredicateRewriter : public SCEVRewriteVisitor<SCEVPredicateRewriter> {
for (auto *P : PredicatedRewrite->second){
// Wrap predicates from outer loops are not supported.
if (auto *WP = dyn_cast<const SCEVWrapPredicate>(P)) {
- auto *AR = cast<const SCEVAddRecExpr>(WP->getExpr());
- if (L != AR->getLoop())
+ if (L != WP->getExpr()->getLoop())
return Expr;
}
if (!addOverflowAssumption(P))
@@ -13830,8 +13828,6 @@ bool SCEVComparePredicate::implies(const SCEVPredicate *N) const {
bool SCEVComparePredicate::isAlwaysTrue() const { return false; }
-const SCEV *SCEVComparePredicate::getExpr() const { return LHS; }
-
void SCEVComparePredicate::print(raw_ostream &OS, unsigned Depth) const {
if (Pred == ICmpInst::ICMP_EQ)
OS.indent(Depth) << "Equal predicate: " << *LHS << " == " << *RHS << "\n";
@@ -13847,7 +13843,7 @@ SCEVWrapPredicate::SCEVWrapPredicate(const FoldingSetNodeIDRef ID,
IncrementWrapFlags Flags)
: SCEVPredicate(ID, P_Wrap), AR(AR), Flags(Flags) {}
-const SCEV *SCEVWrapPredicate::getExpr() const { return AR; }
+const SCEVAddRecExpr *SCEVWrapPredicate::getExpr() const { return AR; }
bool SCEVWrapPredicate::implies(const SCEVPredicate *N) const {
const auto *Op = dyn_cast<SCEVWrapPredicate>(N);
@@ -13907,30 +13903,15 @@ bool SCEVUnionPredicate::isAlwaysTrue() const {
[](const SCEVPredicate *I) { return I->isAlwaysTrue(); });
}
-ArrayRef<const SCEVPredicate *>
-SCEVUnionPredicate::getPredicatesForExpr(const SCEV *Expr) const {
- auto I = SCEVToPreds.find(Expr);
- if (I == SCEVToPreds.end())
- return ArrayRef<const SCEVPredicate *>();
- return I->second;
-}
-
bool SCEVUnionPredicate::implies(const SCEVPredicate *N) const {
if (const auto *Set = dyn_cast<SCEVUnionPredicate>(N))
return all_of(Set->Preds,
[this](const SCEVPredicate *I) { return this->implies(I); });
- auto ScevPredsIt = SCEVToPreds.find(N->getExpr());
- if (ScevPredsIt == SCEVToPreds.end())
- return false;
- auto &SCEVPreds = ScevPredsIt->second;
-
- return any_of(SCEVPreds,
+ return any_of(Preds,
[N](const SCEVPredicate *I) { return I->implies(N); });
}
-const SCEV *SCEVUnionPredicate::getExpr() const { return nullptr; }
-
void SCEVUnionPredicate::print(raw_ostream &OS, unsigned Depth) const {
for (auto Pred : Preds)
Pred->print(OS, Depth);
@@ -13943,11 +13924,6 @@ void SCEVUnionPredicate::add(const SCEVPredicate *N) {
return;
}
- const SCEV *Key = N->getExpr();
- assert(Key && "Only SCEVUnionPredicate doesn't have an "
- " associated expression!");
-
- SCEVToPreds[Key].push_back(N);
Preds.push_back(N);
}
More information about the llvm-commits
mailing list