Skip to content

Commit 2fbeb5f

Browse files
committed
!fixup use raw pointer (const SCEV * + lower bits) for AddPointer.
1 parent 9823037 commit 2fbeb5f

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
@@ -81,6 +81,8 @@ class SCEVUse : public PointerIntPair<const SCEV *, 2> {
8181
const SCEV *operator->() const { return getPointer(); }
8282
const SCEV *operator->() { return getPointer(); }
8383

84+
void *getRawPointer() { return getOpaqueValue(); }
85+
8486
/// Print out the internal representation of this scalar to the specified
8587
/// stream. This should really only be used for debugging purposes.
8688
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
@@ -1001,7 +1001,7 @@ SCEVUse ScalarEvolution::getLosslessPtrToIntExpr(SCEVUse Op, unsigned Depth) {
10011001
// What would be an ID for such a SCEV cast expression?
10021002
FoldingSetNodeID ID;
10031003
ID.AddInteger(scPtrToInt);
1004-
ID.AddPointer(Op);
1004+
ID.AddPointer(Op.getRawPointer());
10051005

10061006
void *IP = nullptr;
10071007

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

11331133
FoldingSetNodeID ID;
11341134
ID.AddInteger(scTruncate);
1135-
ID.AddPointer(Op);
1135+
ID.AddPointer(Op.getRawPointer());
11361136
ID.AddPointer(Ty);
11371137
void *IP = nullptr;
11381138
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
@@ -1453,8 +1453,8 @@ bool ScalarEvolution::proveNoWrapByVaryingStart(SCEVUse Start, SCEVUse Step,
14531453

14541454
FoldingSetNodeID ID;
14551455
ID.AddInteger(scAddRecExpr);
1456-
ID.AddPointer(PreStart);
1457-
ID.AddPointer(Step);
1456+
ID.AddPointer(PreStart.getRawPointer());
1457+
ID.AddPointer(Step.getRawPointer());
14581458
ID.AddPointer(L);
14591459
void *IP = nullptr;
14601460
const auto *PreAR =
@@ -1573,7 +1573,7 @@ SCEVUse ScalarEvolution::getZeroExtendExprImpl(SCEVUse Op, Type *Ty,
15731573
// computed a SCEV for this Op and Ty.
15741574
FoldingSetNodeID ID;
15751575
ID.AddInteger(scZeroExtend);
1576-
ID.AddPointer(Op);
1576+
ID.AddPointer(Op.getRawPointer());
15771577
ID.AddPointer(Ty);
15781578
void *IP = nullptr;
15791579
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
@@ -1914,7 +1914,7 @@ SCEVUse ScalarEvolution::getSignExtendExprImpl(SCEVUse Op, Type *Ty,
19141914
// computed a SCEV for this Op and Ty.
19151915
FoldingSetNodeID ID;
19161916
ID.AddInteger(scSignExtend);
1917-
ID.AddPointer(Op);
1917+
ID.AddPointer(Op.getRawPointer());
19181918
ID.AddPointer(Ty);
19191919
void *IP = nullptr;
19201920
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
@@ -2220,7 +2220,7 @@ SCEVUse ScalarEvolution::getAnyExtendExpr(SCEVUse Op, Type *Ty) {
22202220
/// may be exposed. This helps getAddRecExpr short-circuit extra work in
22212221
/// the common case where no interesting opportunities are present, and
22222222
/// is also used as a check to avoid infinite recursion.
2223-
static bool CollectAddOperandsWithScales(DenseMap<const SCEV *, APInt> &M,
2223+
static bool CollectAddOperandsWithScales(DenseMap<SCEVUse, APInt> &M,
22242224
SmallVectorImpl<SCEVUse> &NewOps,
22252225
APInt &AccumulatedConstant,
22262226
ArrayRef<SCEVUse> Ops,
@@ -2268,7 +2268,7 @@ static bool CollectAddOperandsWithScales(DenseMap<const SCEV *, APInt> &M,
22682268
}
22692269
} else {
22702270
// An ordinary operand. Update the map.
2271-
std::pair<DenseMap<const SCEV *, APInt>::iterator, bool> Pair =
2271+
std::pair<DenseMap<SCEVUse, APInt>::iterator, bool> Pair =
22722272
M.insert({Ops[i], Scale});
22732273
if (Pair.second) {
22742274
NewOps.push_back(Pair.first->first);
@@ -2740,7 +2740,7 @@ SCEVUse ScalarEvolution::getAddExpr(SmallVectorImpl<SCEVUse> &Ops,
27402740
// operands multiplied by constant values.
27412741
if (Idx < Ops.size() && isa<SCEVMulExpr>(Ops[Idx])) {
27422742
uint64_t BitWidth = getTypeSizeInBits(Ty);
2743-
DenseMap<const SCEV *, APInt> M;
2743+
DenseMap<SCEVUse, APInt> M;
27442744
SmallVector<SCEVUse, 8> NewOps;
27452745
APInt AccumulatedConstant(BitWidth, 0);
27462746
if (CollectAddOperandsWithScales(M, NewOps, AccumulatedConstant,
@@ -2977,7 +2977,7 @@ SCEVUse ScalarEvolution::getOrCreateAddExpr(ArrayRef<SCEVUse> Ops,
29772977
FoldingSetNodeID ID;
29782978
ID.AddInteger(scAddExpr);
29792979
for (SCEVUse Op : Ops)
2980-
ID.AddPointer(Op);
2980+
ID.AddPointer(Op.getRawPointer());
29812981
void *IP = nullptr;
29822982
SCEVAddExpr *S =
29832983
static_cast<SCEVAddExpr *>(UniqueSCEVs.FindNodeOrInsertPos(ID, IP));
@@ -2999,7 +2999,7 @@ SCEVUse ScalarEvolution::getOrCreateAddRecExpr(ArrayRef<SCEVUse> Ops,
29992999
FoldingSetNodeID ID;
30003000
ID.AddInteger(scAddRecExpr);
30013001
for (SCEVUse Op : Ops)
3002-
ID.AddPointer(Op);
3002+
ID.AddPointer(Op.getRawPointer());
30033003
ID.AddPointer(L);
30043004
void *IP = nullptr;
30053005
SCEVAddRecExpr *S =
@@ -3022,7 +3022,7 @@ SCEVUse ScalarEvolution::getOrCreateMulExpr(ArrayRef<SCEVUse> Ops,
30223022
FoldingSetNodeID ID;
30233023
ID.AddInteger(scMulExpr);
30243024
for (SCEVUse Op : Ops)
3025-
ID.AddPointer(Op);
3025+
ID.AddPointer(Op.getRawPointer());
30263026
void *IP = nullptr;
30273027
SCEVMulExpr *S =
30283028
static_cast<SCEVMulExpr *>(UniqueSCEVs.FindNodeOrInsertPos(ID, IP));
@@ -3422,8 +3422,8 @@ SCEVUse ScalarEvolution::getUDivExpr(SCEVUse LHS, SCEVUse RHS) {
34223422

34233423
FoldingSetNodeID ID;
34243424
ID.AddInteger(scUDivExpr);
3425-
ID.AddPointer(LHS);
3426-
ID.AddPointer(RHS);
3425+
ID.AddPointer(LHS.getRawPointer());
3426+
ID.AddPointer(RHS.getRawPointer());
34273427
void *IP = nullptr;
34283428
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
34293429
return S;
@@ -3489,8 +3489,8 @@ SCEVUse ScalarEvolution::getUDivExpr(SCEVUse LHS, SCEVUse RHS) {
34893489
// already cached.
34903490
ID.clear();
34913491
ID.AddInteger(scUDivExpr);
3492-
ID.AddPointer(LHS);
3493-
ID.AddPointer(RHS);
3492+
ID.AddPointer(LHS.getRawPointer());
3493+
ID.AddPointer(RHS.getRawPointer());
34943494
IP = nullptr;
34953495
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
34963496
return S;
@@ -3824,7 +3824,7 @@ SCEV *ScalarEvolution::findExistingSCEVInCache(SCEVTypes SCEVType,
38243824
FoldingSetNodeID ID;
38253825
ID.AddInteger(SCEVType);
38263826
for (SCEVUse Op : Ops)
3827-
ID.AddPointer(Op);
3827+
ID.AddPointer(Op.getRawPointer());
38283828
void *IP = nullptr;
38293829
return UniqueSCEVs.FindNodeOrInsertPos(ID, IP);
38303830
}
@@ -3966,8 +3966,8 @@ SCEVUse ScalarEvolution::getMinMaxExpr(SCEVTypes Kind,
39663966
// already have one, otherwise create a new one.
39673967
FoldingSetNodeID ID;
39683968
ID.AddInteger(Kind);
3969-
for (const SCEV *Op : Ops)
3970-
ID.AddPointer(Op);
3969+
for (SCEVUse Op : Ops)
3970+
ID.AddPointer(Op.getRawPointer());
39713971
void *IP = nullptr;
39723972
SCEVUse ExistingSCEV = UniqueSCEVs.FindNodeOrInsertPos(ID, IP);
39733973
if (ExistingSCEV)
@@ -4353,8 +4353,8 @@ ScalarEvolution::getSequentialMinMaxExpr(SCEVTypes Kind,
43534353
// already have one, otherwise create a new one.
43544354
FoldingSetNodeID ID;
43554355
ID.AddInteger(Kind);
4356-
for (const SCEV *Op : Ops)
4357-
ID.AddPointer(Op);
4356+
for (SCEVUse Op : Ops)
4357+
ID.AddPointer(Op.getRawPointer());
43584358
void *IP = nullptr;
43594359
SCEVUse ExistingSCEV = UniqueSCEVs.FindNodeOrInsertPos(ID, IP);
43604360
if (ExistingSCEV)
@@ -14547,8 +14547,8 @@ ScalarEvolution::getComparePredicate(const ICmpInst::Predicate Pred,
1454714547
// Unique this node based on the arguments
1454814548
ID.AddInteger(SCEVPredicate::P_Compare);
1454914549
ID.AddInteger(Pred);
14550-
ID.AddPointer(LHS);
14551-
ID.AddPointer(RHS);
14550+
ID.AddPointer(LHS.getRawPointer());
14551+
ID.AddPointer(RHS.getRawPointer());
1455214552
void *IP = nullptr;
1455314553
if (const auto *S = UniquePreds.FindNodeOrInsertPos(ID, IP))
1455414554
return S;
@@ -14564,6 +14564,7 @@ const SCEVPredicate *ScalarEvolution::getWrapPredicate(
1456414564
FoldingSetNodeID ID;
1456514565
// Unique this node based on the arguments
1456614566
ID.AddInteger(SCEVPredicate::P_Wrap);
14567+
// TODO: Use SCEVUse
1456714568
ID.AddPointer(AR);
1456814569
ID.AddInteger(AddedFlags);
1456914570
void *IP = nullptr;

0 commit comments

Comments
 (0)