Skip to content

Commit a8e9e7d

Browse files
committed
!fixup use raw pointer (const SCEV * + lower bits) for AddPointer.
1 parent 4653f93 commit a8e9e7d

File tree

2 files changed

+26
-23
lines changed

2 files changed

+26
-23
lines changed

llvm/include/llvm/Analysis/ScalarEvolution.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ class SCEVUse : public PointerIntPair<const SCEV *, 2> {
7777
const SCEV *operator->() const { return getPointer(); }
7878
const SCEV *operator->() { return getPointer(); }
7979

80+
void *getRawPointer() { return getOpaqueValue(); }
81+
8082
/// Print out the internal representation of this scalar to the specified
8183
/// stream. This should really only be used for debugging purposes.
8284
void print(raw_ostream &OS) const;

llvm/lib/Analysis/ScalarEvolution.cpp

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1044,7 +1044,7 @@ SCEVUse ScalarEvolution::getLosslessPtrToIntExpr(SCEVUse Op, unsigned Depth) {
10441044
// What would be an ID for such a SCEV cast expression?
10451045
FoldingSetNodeID ID;
10461046
ID.AddInteger(scPtrToInt);
1047-
ID.AddPointer(Op);
1047+
ID.AddPointer(Op.getRawPointer());
10481048

10491049
void *IP = nullptr;
10501050

@@ -1175,7 +1175,7 @@ SCEVUse ScalarEvolution::getTruncateExpr(SCEVUse Op, Type *Ty, unsigned Depth) {
11751175

11761176
FoldingSetNodeID ID;
11771177
ID.AddInteger(scTruncate);
1178-
ID.AddPointer(Op);
1178+
ID.AddPointer(Op.getRawPointer());
11791179
ID.AddPointer(Ty);
11801180
void *IP = nullptr;
11811181
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
@@ -1496,8 +1496,8 @@ bool ScalarEvolution::proveNoWrapByVaryingStart(SCEVUse Start, SCEVUse Step,
14961496

14971497
FoldingSetNodeID ID;
14981498
ID.AddInteger(scAddRecExpr);
1499-
ID.AddPointer(PreStart);
1500-
ID.AddPointer(Step);
1499+
ID.AddPointer(PreStart.getRawPointer());
1500+
ID.AddPointer(Step.getRawPointer());
15011501
ID.AddPointer(L);
15021502
void *IP = nullptr;
15031503
const auto *PreAR =
@@ -1615,7 +1615,7 @@ SCEVUse ScalarEvolution::getZeroExtendExprImpl(SCEVUse Op, Type *Ty,
16151615
// computed a SCEV for this Op and Ty.
16161616
FoldingSetNodeID ID;
16171617
ID.AddInteger(scZeroExtend);
1618-
ID.AddPointer(Op);
1618+
ID.AddPointer(Op.getRawPointer());
16191619
ID.AddPointer(Ty);
16201620
void *IP = nullptr;
16211621
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
@@ -1956,7 +1956,7 @@ SCEVUse ScalarEvolution::getSignExtendExprImpl(SCEVUse Op, Type *Ty,
19561956
// computed a SCEV for this Op and Ty.
19571957
FoldingSetNodeID ID;
19581958
ID.AddInteger(scSignExtend);
1959-
ID.AddPointer(Op);
1959+
ID.AddPointer(Op.getRawPointer());
19601960
ID.AddPointer(Ty);
19611961
void *IP = nullptr;
19621962
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
@@ -2264,7 +2264,7 @@ SCEVUse ScalarEvolution::getAnyExtendExpr(SCEVUse Op, Type *Ty) {
22642264
/// is also used as a check to avoid infinite recursion.
22652265
static bool
22662266
CollectAddOperandsWithScales(SmallDenseMap<const SCEV *, APInt, 16> &M,
2267-
SmallVectorImpl<const SCEV *> &NewOps,
2267+
SmallVectorImpl<SCEVUse> &NewOps,
22682268
APInt &AccumulatedConstant,
22692269
ArrayRef<SCEVUse> Ops, const APInt &Scale,
22702270
ScalarEvolution &SE) {
@@ -2310,7 +2310,7 @@ CollectAddOperandsWithScales(SmallDenseMap<const SCEV *, APInt, 16> &M,
23102310
}
23112311
} else {
23122312
// An ordinary operand. Update the map.
2313-
std::pair<DenseMap<const SCEV *, APInt>::iterator, bool> Pair =
2313+
std::pair<DenseMap<SCEVUse, APInt>::iterator, bool> Pair =
23142314
M.insert({Ops[i], Scale});
23152315
if (Pair.second) {
23162316
NewOps.push_back(Pair.first->first);
@@ -2767,7 +2767,7 @@ SCEVUse ScalarEvolution::getAddExpr(SmallVectorImpl<SCEVUse> &Ops,
27672767
// operands multiplied by constant values.
27682768
if (Idx < Ops.size() && isa<SCEVMulExpr>(Ops[Idx])) {
27692769
uint64_t BitWidth = getTypeSizeInBits(Ty);
2770-
SmallDenseMap<const SCEV *, APInt, 16> M;
2770+
SmallDenseMap<SCEVUse , APInt, 16> M;
27712771
SmallVector<SCEVUse, 8> NewOps;
27722772
APInt AccumulatedConstant(BitWidth, 0);
27732773
if (CollectAddOperandsWithScales(M, NewOps, AccumulatedConstant,
@@ -3004,7 +3004,7 @@ SCEVUse ScalarEvolution::getOrCreateAddExpr(ArrayRef<SCEVUse> Ops,
30043004
FoldingSetNodeID ID;
30053005
ID.AddInteger(scAddExpr);
30063006
for (SCEVUse Op : Ops)
3007-
ID.AddPointer(Op);
3007+
ID.AddPointer(Op.getRawPointer());
30083008
void *IP = nullptr;
30093009
SCEVAddExpr *S =
30103010
static_cast<SCEVAddExpr *>(UniqueSCEVs.FindNodeOrInsertPos(ID, IP));
@@ -3026,7 +3026,7 @@ SCEVUse ScalarEvolution::getOrCreateAddRecExpr(ArrayRef<SCEVUse> Ops,
30263026
FoldingSetNodeID ID;
30273027
ID.AddInteger(scAddRecExpr);
30283028
for (SCEVUse Op : Ops)
3029-
ID.AddPointer(Op);
3029+
ID.AddPointer(Op.getRawPointer());
30303030
ID.AddPointer(L);
30313031
void *IP = nullptr;
30323032
SCEVAddRecExpr *S =
@@ -3049,7 +3049,7 @@ SCEVUse ScalarEvolution::getOrCreateMulExpr(ArrayRef<SCEVUse> Ops,
30493049
FoldingSetNodeID ID;
30503050
ID.AddInteger(scMulExpr);
30513051
for (SCEVUse Op : Ops)
3052-
ID.AddPointer(Op);
3052+
ID.AddPointer(Op.getRawPointer());
30533053
void *IP = nullptr;
30543054
SCEVMulExpr *S =
30553055
static_cast<SCEVMulExpr *>(UniqueSCEVs.FindNodeOrInsertPos(ID, IP));
@@ -3428,8 +3428,8 @@ SCEVUse ScalarEvolution::getUDivExpr(SCEVUse LHS, SCEVUse RHS) {
34283428

34293429
FoldingSetNodeID ID;
34303430
ID.AddInteger(scUDivExpr);
3431-
ID.AddPointer(LHS);
3432-
ID.AddPointer(RHS);
3431+
ID.AddPointer(LHS.getRawPointer());
3432+
ID.AddPointer(RHS.getRawPointer());
34333433
void *IP = nullptr;
34343434
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
34353435
return S;
@@ -3495,8 +3495,8 @@ SCEVUse ScalarEvolution::getUDivExpr(SCEVUse LHS, SCEVUse RHS) {
34953495
// already cached.
34963496
ID.clear();
34973497
ID.AddInteger(scUDivExpr);
3498-
ID.AddPointer(LHS);
3499-
ID.AddPointer(RHS);
3498+
ID.AddPointer(LHS.getRawPointer());
3499+
ID.AddPointer(RHS.getRawPointer());
35003500
IP = nullptr;
35013501
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
35023502
return S;
@@ -3846,7 +3846,7 @@ SCEV *ScalarEvolution::findExistingSCEVInCache(SCEVTypes SCEVType,
38463846
FoldingSetNodeID ID;
38473847
ID.AddInteger(SCEVType);
38483848
for (SCEVUse Op : Ops)
3849-
ID.AddPointer(Op);
3849+
ID.AddPointer(Op.getRawPointer());
38503850
void *IP = nullptr;
38513851
return UniqueSCEVs.FindNodeOrInsertPos(ID, IP);
38523852
}
@@ -3973,8 +3973,8 @@ SCEVUse ScalarEvolution::getMinMaxExpr(SCEVTypes Kind,
39733973
// already have one, otherwise create a new one.
39743974
FoldingSetNodeID ID;
39753975
ID.AddInteger(Kind);
3976-
for (const SCEV *Op : Ops)
3977-
ID.AddPointer(Op);
3976+
for (SCEVUse Op : Ops)
3977+
ID.AddPointer(Op.getRawPointer());
39783978
void *IP = nullptr;
39793979
SCEVUse ExistingSCEV = UniqueSCEVs.FindNodeOrInsertPos(ID, IP);
39803980
if (ExistingSCEV)
@@ -4358,8 +4358,8 @@ ScalarEvolution::getSequentialMinMaxExpr(SCEVTypes Kind,
43584358
// already have one, otherwise create a new one.
43594359
FoldingSetNodeID ID;
43604360
ID.AddInteger(Kind);
4361-
for (const SCEV *Op : Ops)
4362-
ID.AddPointer(Op);
4361+
for (SCEVUse Op : Ops)
4362+
ID.AddPointer(Op.getRawPointer());
43634363
void *IP = nullptr;
43644364
SCEVUse ExistingSCEV = UniqueSCEVs.FindNodeOrInsertPos(ID, IP);
43654365
if (ExistingSCEV)
@@ -14684,8 +14684,8 @@ ScalarEvolution::getComparePredicate(const ICmpInst::Predicate Pred,
1468414684
// Unique this node based on the arguments
1468514685
ID.AddInteger(SCEVPredicate::P_Compare);
1468614686
ID.AddInteger(Pred);
14687-
ID.AddPointer(LHS);
14688-
ID.AddPointer(RHS);
14687+
ID.AddPointer(LHS.getRawPointer());
14688+
ID.AddPointer(RHS.getRawPointer());
1468914689
void *IP = nullptr;
1469014690
if (const auto *S = UniquePreds.FindNodeOrInsertPos(ID, IP))
1469114691
return S;
@@ -14701,6 +14701,7 @@ const SCEVPredicate *ScalarEvolution::getWrapPredicate(
1470114701
FoldingSetNodeID ID;
1470214702
// Unique this node based on the arguments
1470314703
ID.AddInteger(SCEVPredicate::P_Wrap);
14704+
// TODO: Use SCEVUse
1470414705
ID.AddPointer(AR);
1470514706
ID.AddInteger(AddedFlags);
1470614707
void *IP = nullptr;

0 commit comments

Comments
 (0)