[llvm] 4b5e260 - [SCEV] Simplify findExistingSCEVInCache interface [NFC]
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 8 15:26:18 PDT 2021
Author: Philip Reames
Date: 2021-09-08T15:26:07-07:00
New Revision: 4b5e260b1d5b463a3488372bd7df183ae60ef883
URL: https://github.com/llvm/llvm-project/commit/4b5e260b1d5b463a3488372bd7df183ae60ef883
DIFF: https://github.com/llvm/llvm-project/commit/4b5e260b1d5b463a3488372bd7df183ae60ef883.diff
LOG: [SCEV] Simplify findExistingSCEVInCache interface [NFC]
We were returning a tuple when all but one caller only cared about one piece of the return value. That one caller can inline the complexity, and we can simplify all other uses.
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 445a925c70e8..d7314bb8ed17 100644
--- a/llvm/include/llvm/Analysis/ScalarEvolution.h
+++ b/llvm/include/llvm/Analysis/ScalarEvolution.h
@@ -2005,14 +2005,8 @@ class ScalarEvolution {
bool matchURem(const SCEV *Expr, const SCEV *&LHS, const SCEV *&RHS);
/// Look for a SCEV expression with type `SCEVType` and operands `Ops` in
- /// `UniqueSCEVs`.
- ///
- /// The first component of the returned tuple is the SCEV if found and null
- /// otherwise. The second component is the `FoldingSetNodeID` that was
- /// constructed to look up the SCEV and the third component is the insertion
- /// point.
- std::tuple<SCEV *, FoldingSetNodeID, void *>
- findExistingSCEVInCache(SCEVTypes SCEVType, ArrayRef<const SCEV *> Ops);
+ /// `UniqueSCEVs`. Return if found, else nullptr.
+ SCEV *findExistingSCEVInCache(SCEVTypes SCEVType, ArrayRef<const SCEV *> Ops);
FoldingSet<SCEV> UniqueSCEVs;
FoldingSet<SCEVPredicate> UniquePreds;
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
index 151883ab6736..e9e83918dcbd 100644
--- a/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -2456,7 +2456,7 @@ const SCEV *ScalarEvolution::getAddExpr(SmallVectorImpl<const SCEV *> &Ops,
if (Depth > MaxArithDepth || hasHugeExpression(Ops))
return getOrCreateAddExpr(Ops, ComputeFlags(Ops));
- if (SCEV *S = std::get<0>(findExistingSCEVInCache(scAddExpr, Ops))) {
+ if (SCEV *S = findExistingSCEVInCache(scAddExpr, Ops)) {
// Don't strengthen flags if we have no new information.
SCEVAddExpr *Add = static_cast<SCEVAddExpr *>(S);
if (Add->getNoWrapFlags(OrigFlags) != OrigFlags)
@@ -3026,7 +3026,7 @@ const SCEV *ScalarEvolution::getMulExpr(SmallVectorImpl<const SCEV *> &Ops,
if (Depth > MaxArithDepth || hasHugeExpression(Ops))
return getOrCreateMulExpr(Ops, ComputeFlags(Ops));
- if (SCEV *S = std::get<0>(findExistingSCEVInCache(scMulExpr, Ops))) {
+ if (SCEV *S = findExistingSCEVInCache(scMulExpr, Ops)) {
// Don't strengthen flags if we have no new information.
SCEVMulExpr *Mul = static_cast<SCEVMulExpr *>(S);
if (Mul->getNoWrapFlags(OrigFlags) != OrigFlags)
@@ -3657,16 +3657,14 @@ ScalarEvolution::getGEPExpr(GEPOperator *GEP,
return GEPExpr;
}
-std::tuple<SCEV *, FoldingSetNodeID, void *>
-ScalarEvolution::findExistingSCEVInCache(SCEVTypes SCEVType,
- ArrayRef<const SCEV *> Ops) {
+SCEV *ScalarEvolution::findExistingSCEVInCache(SCEVTypes SCEVType,
+ ArrayRef<const SCEV *> Ops) {
FoldingSetNodeID ID;
- void *IP = nullptr;
ID.AddInteger(SCEVType);
for (unsigned i = 0, e = Ops.size(); i != e; ++i)
ID.AddPointer(Ops[i]);
- return std::tuple<SCEV *, FoldingSetNodeID, void *>(
- UniqueSCEVs.FindNodeOrInsertPos(ID, IP), std::move(ID), IP);
+ void *IP = nullptr;
+ return UniqueSCEVs.FindNodeOrInsertPos(ID, IP);
}
const SCEV *ScalarEvolution::getAbsExpr(const SCEV *Op, bool IsNSW) {
@@ -3696,7 +3694,7 @@ const SCEV *ScalarEvolution::getMinMaxExpr(SCEVTypes Kind,
GroupByComplexity(Ops, &LI, DT);
// Check if we have created the same expression before.
- if (const SCEV *S = std::get<0>(findExistingSCEVInCache(Kind, Ops))) {
+ if (const SCEV *S = findExistingSCEVInCache(Kind, Ops)) {
return S;
}
@@ -3794,10 +3792,12 @@ const SCEV *ScalarEvolution::getMinMaxExpr(SCEVTypes Kind,
// Okay, it looks like we really DO need an expr. Check to see if we
// already have one, otherwise create a new one.
- const SCEV *ExistingSCEV;
FoldingSetNodeID ID;
- void *IP;
- std::tie(ExistingSCEV, ID, IP) = findExistingSCEVInCache(Kind, Ops);
+ ID.AddInteger(Kind);
+ for (unsigned i = 0, e = Ops.size(); i != e; ++i)
+ ID.AddPointer(Ops[i]);
+ void *IP = nullptr;
+ const SCEV *ExistingSCEV = UniqueSCEVs.FindNodeOrInsertPos(ID, IP);
if (ExistingSCEV)
return ExistingSCEV;
const SCEV **O = SCEVAllocator.Allocate<const SCEV *>(Ops.size());
More information about the llvm-commits
mailing list