Skip to content

Commit 5eafc0b

Browse files
committed
!fixup use raw pointer (const SCEV * + lower bits) for AddPointer.
1 parent 0b64068 commit 5eafc0b

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 =
@@ -1616,7 +1616,7 @@ SCEVUse ScalarEvolution::getZeroExtendExprImpl(SCEVUse Op, Type *Ty,
16161616
// computed a SCEV for this Op and Ty.
16171617
FoldingSetNodeID ID;
16181618
ID.AddInteger(scZeroExtend);
1619-
ID.AddPointer(Op);
1619+
ID.AddPointer(Op.getRawPointer());
16201620
ID.AddPointer(Ty);
16211621
void *IP = nullptr;
16221622
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
@@ -1957,7 +1957,7 @@ SCEVUse ScalarEvolution::getSignExtendExprImpl(SCEVUse Op, Type *Ty,
19571957
// computed a SCEV for this Op and Ty.
19581958
FoldingSetNodeID ID;
19591959
ID.AddInteger(scSignExtend);
1960-
ID.AddPointer(Op);
1960+
ID.AddPointer(Op.getRawPointer());
19611961
ID.AddPointer(Ty);
19621962
void *IP = nullptr;
19631963
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
@@ -2265,7 +2265,7 @@ SCEVUse ScalarEvolution::getAnyExtendExpr(SCEVUse Op, Type *Ty) {
22652265
/// is also used as a check to avoid infinite recursion.
22662266
static bool
22672267
CollectAddOperandsWithScales(SmallDenseMap<const SCEV *, APInt, 16> &M,
2268-
SmallVectorImpl<const SCEV *> &NewOps,
2268+
SmallVectorImpl<SCEVUse> &NewOps,
22692269
APInt &AccumulatedConstant,
22702270
ArrayRef<SCEVUse> Ops, const APInt &Scale,
22712271
ScalarEvolution &SE) {
@@ -2311,7 +2311,7 @@ CollectAddOperandsWithScales(SmallDenseMap<const SCEV *, APInt, 16> &M,
23112311
}
23122312
} else {
23132313
// An ordinary operand. Update the map.
2314-
std::pair<DenseMap<const SCEV *, APInt>::iterator, bool> Pair =
2314+
std::pair<DenseMap<SCEVUse, APInt>::iterator, bool> Pair =
23152315
M.insert({Ops[i], Scale});
23162316
if (Pair.second) {
23172317
NewOps.push_back(Pair.first->first);
@@ -2768,7 +2768,7 @@ SCEVUse ScalarEvolution::getAddExpr(SmallVectorImpl<SCEVUse> &Ops,
27682768
// operands multiplied by constant values.
27692769
if (Idx < Ops.size() && isa<SCEVMulExpr>(Ops[Idx])) {
27702770
uint64_t BitWidth = getTypeSizeInBits(Ty);
2771-
SmallDenseMap<const SCEV *, APInt, 16> M;
2771+
SmallDenseMap<SCEVUse , APInt, 16> M;
27722772
SmallVector<SCEVUse, 8> NewOps;
27732773
APInt AccumulatedConstant(BitWidth, 0);
27742774
if (CollectAddOperandsWithScales(M, NewOps, AccumulatedConstant,
@@ -3005,7 +3005,7 @@ SCEVUse ScalarEvolution::getOrCreateAddExpr(ArrayRef<SCEVUse> Ops,
30053005
FoldingSetNodeID ID;
30063006
ID.AddInteger(scAddExpr);
30073007
for (SCEVUse Op : Ops)
3008-
ID.AddPointer(Op);
3008+
ID.AddPointer(Op.getRawPointer());
30093009
void *IP = nullptr;
30103010
SCEVAddExpr *S =
30113011
static_cast<SCEVAddExpr *>(UniqueSCEVs.FindNodeOrInsertPos(ID, IP));
@@ -3027,7 +3027,7 @@ SCEVUse ScalarEvolution::getOrCreateAddRecExpr(ArrayRef<SCEVUse> Ops,
30273027
FoldingSetNodeID ID;
30283028
ID.AddInteger(scAddRecExpr);
30293029
for (SCEVUse Op : Ops)
3030-
ID.AddPointer(Op);
3030+
ID.AddPointer(Op.getRawPointer());
30313031
ID.AddPointer(L);
30323032
void *IP = nullptr;
30333033
SCEVAddRecExpr *S =
@@ -3050,7 +3050,7 @@ SCEVUse ScalarEvolution::getOrCreateMulExpr(ArrayRef<SCEVUse> Ops,
30503050
FoldingSetNodeID ID;
30513051
ID.AddInteger(scMulExpr);
30523052
for (SCEVUse Op : Ops)
3053-
ID.AddPointer(Op);
3053+
ID.AddPointer(Op.getRawPointer());
30543054
void *IP = nullptr;
30553055
SCEVMulExpr *S =
30563056
static_cast<SCEVMulExpr *>(UniqueSCEVs.FindNodeOrInsertPos(ID, IP));
@@ -3429,8 +3429,8 @@ SCEVUse ScalarEvolution::getUDivExpr(SCEVUse LHS, SCEVUse RHS) {
34293429

34303430
FoldingSetNodeID ID;
34313431
ID.AddInteger(scUDivExpr);
3432-
ID.AddPointer(LHS);
3433-
ID.AddPointer(RHS);
3432+
ID.AddPointer(LHS.getRawPointer());
3433+
ID.AddPointer(RHS.getRawPointer());
34343434
void *IP = nullptr;
34353435
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
34363436
return S;
@@ -3496,8 +3496,8 @@ SCEVUse ScalarEvolution::getUDivExpr(SCEVUse LHS, SCEVUse RHS) {
34963496
// already cached.
34973497
ID.clear();
34983498
ID.AddInteger(scUDivExpr);
3499-
ID.AddPointer(LHS);
3500-
ID.AddPointer(RHS);
3499+
ID.AddPointer(LHS.getRawPointer());
3500+
ID.AddPointer(RHS.getRawPointer());
35013501
IP = nullptr;
35023502
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
35033503
return S;
@@ -3847,7 +3847,7 @@ SCEV *ScalarEvolution::findExistingSCEVInCache(SCEVTypes SCEVType,
38473847
FoldingSetNodeID ID;
38483848
ID.AddInteger(SCEVType);
38493849
for (SCEVUse Op : Ops)
3850-
ID.AddPointer(Op);
3850+
ID.AddPointer(Op.getRawPointer());
38513851
void *IP = nullptr;
38523852
return UniqueSCEVs.FindNodeOrInsertPos(ID, IP);
38533853
}
@@ -3974,8 +3974,8 @@ SCEVUse ScalarEvolution::getMinMaxExpr(SCEVTypes Kind,
39743974
// already have one, otherwise create a new one.
39753975
FoldingSetNodeID ID;
39763976
ID.AddInteger(Kind);
3977-
for (const SCEV *Op : Ops)
3978-
ID.AddPointer(Op);
3977+
for (SCEVUse Op : Ops)
3978+
ID.AddPointer(Op.getRawPointer());
39793979
void *IP = nullptr;
39803980
SCEVUse ExistingSCEV = UniqueSCEVs.FindNodeOrInsertPos(ID, IP);
39813981
if (ExistingSCEV)
@@ -4359,8 +4359,8 @@ ScalarEvolution::getSequentialMinMaxExpr(SCEVTypes Kind,
43594359
// already have one, otherwise create a new one.
43604360
FoldingSetNodeID ID;
43614361
ID.AddInteger(Kind);
4362-
for (const SCEV *Op : Ops)
4363-
ID.AddPointer(Op);
4362+
for (SCEVUse Op : Ops)
4363+
ID.AddPointer(Op.getRawPointer());
43644364
void *IP = nullptr;
43654365
SCEVUse ExistingSCEV = UniqueSCEVs.FindNodeOrInsertPos(ID, IP);
43664366
if (ExistingSCEV)
@@ -14685,8 +14685,8 @@ ScalarEvolution::getComparePredicate(const ICmpInst::Predicate Pred,
1468514685
// Unique this node based on the arguments
1468614686
ID.AddInteger(SCEVPredicate::P_Compare);
1468714687
ID.AddInteger(Pred);
14688-
ID.AddPointer(LHS);
14689-
ID.AddPointer(RHS);
14688+
ID.AddPointer(LHS.getRawPointer());
14689+
ID.AddPointer(RHS.getRawPointer());
1469014690
void *IP = nullptr;
1469114691
if (const auto *S = UniquePreds.FindNodeOrInsertPos(ID, IP))
1469214692
return S;
@@ -14702,6 +14702,7 @@ const SCEVPredicate *ScalarEvolution::getWrapPredicate(
1470214702
FoldingSetNodeID ID;
1470314703
// Unique this node based on the arguments
1470414704
ID.AddInteger(SCEVPredicate::P_Wrap);
14705+
// TODO: Use SCEVUse
1470514706
ID.AddPointer(AR);
1470614707
ID.AddInteger(AddedFlags);
1470714708
void *IP = nullptr;

0 commit comments

Comments
 (0)