@@ -1023,7 +1023,7 @@ SCEVUse ScalarEvolution::getLosslessPtrToIntExpr(SCEVUse Op, unsigned Depth) {
1023
1023
// What would be an ID for such a SCEV cast expression?
1024
1024
FoldingSetNodeID ID;
1025
1025
ID.AddInteger(scPtrToInt);
1026
- ID.AddPointer(Op);
1026
+ ID.AddPointer(Op.getRawPointer() );
1027
1027
1028
1028
void *IP = nullptr;
1029
1029
@@ -1154,7 +1154,7 @@ SCEVUse ScalarEvolution::getTruncateExpr(SCEVUse Op, Type *Ty, unsigned Depth) {
1154
1154
1155
1155
FoldingSetNodeID ID;
1156
1156
ID.AddInteger(scTruncate);
1157
- ID.AddPointer(Op);
1157
+ ID.AddPointer(Op.getRawPointer() );
1158
1158
ID.AddPointer(Ty);
1159
1159
void *IP = nullptr;
1160
1160
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
@@ -1475,8 +1475,8 @@ bool ScalarEvolution::proveNoWrapByVaryingStart(SCEVUse Start, SCEVUse Step,
1475
1475
1476
1476
FoldingSetNodeID ID;
1477
1477
ID.AddInteger(scAddRecExpr);
1478
- ID.AddPointer(PreStart);
1479
- ID.AddPointer(Step);
1478
+ ID.AddPointer(PreStart.getRawPointer() );
1479
+ ID.AddPointer(Step.getRawPointer() );
1480
1480
ID.AddPointer(L);
1481
1481
void *IP = nullptr;
1482
1482
const auto *PreAR =
@@ -1595,7 +1595,7 @@ SCEVUse ScalarEvolution::getZeroExtendExprImpl(SCEVUse Op, Type *Ty,
1595
1595
// computed a SCEV for this Op and Ty.
1596
1596
FoldingSetNodeID ID;
1597
1597
ID.AddInteger(scZeroExtend);
1598
- ID.AddPointer(Op);
1598
+ ID.AddPointer(Op.getRawPointer() );
1599
1599
ID.AddPointer(Ty);
1600
1600
void *IP = nullptr;
1601
1601
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
@@ -1936,7 +1936,7 @@ SCEVUse ScalarEvolution::getSignExtendExprImpl(SCEVUse Op, Type *Ty,
1936
1936
// computed a SCEV for this Op and Ty.
1937
1937
FoldingSetNodeID ID;
1938
1938
ID.AddInteger(scSignExtend);
1939
- ID.AddPointer(Op);
1939
+ ID.AddPointer(Op.getRawPointer() );
1940
1940
ID.AddPointer(Ty);
1941
1941
void *IP = nullptr;
1942
1942
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
@@ -2242,7 +2242,7 @@ SCEVUse ScalarEvolution::getAnyExtendExpr(SCEVUse Op, Type *Ty) {
2242
2242
/// may be exposed. This helps getAddRecExpr short-circuit extra work in
2243
2243
/// the common case where no interesting opportunities are present, and
2244
2244
/// is also used as a check to avoid infinite recursion.
2245
- static bool CollectAddOperandsWithScales(DenseMap<const SCEV * , APInt> &M,
2245
+ static bool CollectAddOperandsWithScales(DenseMap<SCEVUse , APInt> &M,
2246
2246
SmallVectorImpl<SCEVUse> &NewOps,
2247
2247
APInt &AccumulatedConstant,
2248
2248
ArrayRef<SCEVUse> Ops,
@@ -2290,7 +2290,7 @@ static bool CollectAddOperandsWithScales(DenseMap<const SCEV *, APInt> &M,
2290
2290
}
2291
2291
} else {
2292
2292
// An ordinary operand. Update the map.
2293
- std::pair<DenseMap<const SCEV * , APInt>::iterator, bool> Pair =
2293
+ std::pair<DenseMap<SCEVUse , APInt>::iterator, bool> Pair =
2294
2294
M.insert({Ops[i], Scale});
2295
2295
if (Pair.second) {
2296
2296
NewOps.push_back(Pair.first->first);
@@ -2762,7 +2762,7 @@ SCEVUse ScalarEvolution::getAddExpr(SmallVectorImpl<SCEVUse> &Ops,
2762
2762
// operands multiplied by constant values.
2763
2763
if (Idx < Ops.size() && isa<SCEVMulExpr>(Ops[Idx])) {
2764
2764
uint64_t BitWidth = getTypeSizeInBits(Ty);
2765
- DenseMap<const SCEV * , APInt> M;
2765
+ DenseMap<SCEVUse , APInt> M;
2766
2766
SmallVector<SCEVUse, 8> NewOps;
2767
2767
APInt AccumulatedConstant(BitWidth, 0);
2768
2768
if (CollectAddOperandsWithScales(M, NewOps, AccumulatedConstant,
@@ -2999,7 +2999,7 @@ SCEVUse ScalarEvolution::getOrCreateAddExpr(ArrayRef<SCEVUse> Ops,
2999
2999
FoldingSetNodeID ID;
3000
3000
ID.AddInteger(scAddExpr);
3001
3001
for (SCEVUse Op : Ops)
3002
- ID.AddPointer(Op);
3002
+ ID.AddPointer(Op.getRawPointer() );
3003
3003
void *IP = nullptr;
3004
3004
SCEVAddExpr *S =
3005
3005
static_cast<SCEVAddExpr *>(UniqueSCEVs.FindNodeOrInsertPos(ID, IP));
@@ -3021,7 +3021,7 @@ SCEVUse ScalarEvolution::getOrCreateAddRecExpr(ArrayRef<SCEVUse> Ops,
3021
3021
FoldingSetNodeID ID;
3022
3022
ID.AddInteger(scAddRecExpr);
3023
3023
for (SCEVUse Op : Ops)
3024
- ID.AddPointer(Op);
3024
+ ID.AddPointer(Op.getRawPointer() );
3025
3025
ID.AddPointer(L);
3026
3026
void *IP = nullptr;
3027
3027
SCEVAddRecExpr *S =
@@ -3044,7 +3044,7 @@ SCEVUse ScalarEvolution::getOrCreateMulExpr(ArrayRef<SCEVUse> Ops,
3044
3044
FoldingSetNodeID ID;
3045
3045
ID.AddInteger(scMulExpr);
3046
3046
for (SCEVUse Op : Ops)
3047
- ID.AddPointer(Op);
3047
+ ID.AddPointer(Op.getRawPointer() );
3048
3048
void *IP = nullptr;
3049
3049
SCEVMulExpr *S =
3050
3050
static_cast<SCEVMulExpr *>(UniqueSCEVs.FindNodeOrInsertPos(ID, IP));
@@ -3444,8 +3444,8 @@ SCEVUse ScalarEvolution::getUDivExpr(SCEVUse LHS, SCEVUse RHS) {
3444
3444
3445
3445
FoldingSetNodeID ID;
3446
3446
ID.AddInteger(scUDivExpr);
3447
- ID.AddPointer(LHS);
3448
- ID.AddPointer(RHS);
3447
+ ID.AddPointer(LHS.getRawPointer() );
3448
+ ID.AddPointer(RHS.getRawPointer() );
3449
3449
void *IP = nullptr;
3450
3450
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
3451
3451
return S;
@@ -3511,8 +3511,8 @@ SCEVUse ScalarEvolution::getUDivExpr(SCEVUse LHS, SCEVUse RHS) {
3511
3511
// already cached.
3512
3512
ID.clear();
3513
3513
ID.AddInteger(scUDivExpr);
3514
- ID.AddPointer(LHS);
3515
- ID.AddPointer(RHS);
3514
+ ID.AddPointer(LHS.getRawPointer() );
3515
+ ID.AddPointer(RHS.getRawPointer() );
3516
3516
IP = nullptr;
3517
3517
if (SCEVUse S = UniqueSCEVs.FindNodeOrInsertPos(ID, IP))
3518
3518
return S;
@@ -3843,7 +3843,7 @@ SCEV *ScalarEvolution::findExistingSCEVInCache(SCEVTypes SCEVType,
3843
3843
FoldingSetNodeID ID;
3844
3844
ID.AddInteger(SCEVType);
3845
3845
for (SCEVUse Op : Ops)
3846
- ID.AddPointer(Op);
3846
+ ID.AddPointer(Op.getRawPointer() );
3847
3847
void *IP = nullptr;
3848
3848
return UniqueSCEVs.FindNodeOrInsertPos(ID, IP);
3849
3849
}
@@ -3986,7 +3986,7 @@ SCEVUse ScalarEvolution::getMinMaxExpr(SCEVTypes Kind,
3986
3986
FoldingSetNodeID ID;
3987
3987
ID.AddInteger(Kind);
3988
3988
for (unsigned i = 0, e = Ops.size(); i != e; ++i)
3989
- ID.AddPointer(Ops[i]);
3989
+ ID.AddPointer(Ops[i].getRawPointer() );
3990
3990
void *IP = nullptr;
3991
3991
SCEVUse ExistingSCEV = UniqueSCEVs.FindNodeOrInsertPos(ID, IP);
3992
3992
if (ExistingSCEV)
@@ -4373,7 +4373,7 @@ ScalarEvolution::getSequentialMinMaxExpr(SCEVTypes Kind,
4373
4373
FoldingSetNodeID ID;
4374
4374
ID.AddInteger(Kind);
4375
4375
for (unsigned i = 0, e = Ops.size(); i != e; ++i)
4376
- ID.AddPointer(Ops[i]);
4376
+ ID.AddPointer(Ops[i].getRawPointer() );
4377
4377
void *IP = nullptr;
4378
4378
SCEVUse ExistingSCEV = UniqueSCEVs.FindNodeOrInsertPos(ID, IP);
4379
4379
if (ExistingSCEV)
@@ -14430,8 +14430,8 @@ ScalarEvolution::getComparePredicate(const ICmpInst::Predicate Pred,
14430
14430
// Unique this node based on the arguments
14431
14431
ID.AddInteger(SCEVPredicate::P_Compare);
14432
14432
ID.AddInteger(Pred);
14433
- ID.AddPointer(LHS);
14434
- ID.AddPointer(RHS);
14433
+ ID.AddPointer(LHS.getRawPointer() );
14434
+ ID.AddPointer(RHS.getRawPointer() );
14435
14435
void *IP = nullptr;
14436
14436
if (const auto *S = UniquePreds.FindNodeOrInsertPos(ID, IP))
14437
14437
return S;
@@ -14447,6 +14447,7 @@ const SCEVPredicate *ScalarEvolution::getWrapPredicate(
14447
14447
FoldingSetNodeID ID;
14448
14448
// Unique this node based on the arguments
14449
14449
ID.AddInteger(SCEVPredicate::P_Wrap);
14450
+ // TODO: Use SCEVUse
14450
14451
ID.AddPointer(AR);
14451
14452
ID.AddInteger(AddedFlags);
14452
14453
void *IP = nullptr;
@@ -14960,10 +14961,10 @@ SCEVUse ScalarEvolution::computeSymbolicMaxBackedgeTakenCount(const Loop *L) {
14960
14961
/// in the map. It skips AddRecExpr because we cannot guarantee that the
14961
14962
/// replacement is loop invariant in the loop of the AddRec.
14962
14963
class SCEVLoopGuardRewriter : public SCEVRewriteVisitor<SCEVLoopGuardRewriter> {
14963
- const DenseMap<const SCEV * , SCEVUse> ⤅
14964
+ const DenseMap<SCEVUse , SCEVUse> ⤅
14964
14965
14965
14966
public:
14966
- SCEVLoopGuardRewriter(ScalarEvolution &SE, DenseMap<const SCEV * , SCEVUse> &M)
14967
+ SCEVLoopGuardRewriter(ScalarEvolution &SE, DenseMap<SCEVUse , SCEVUse> &M)
14967
14968
: SCEVRewriteVisitor(SE), Map(M) {}
14968
14969
14969
14970
SCEVUse visitAddRecExpr(const SCEVAddRecExpr *Expr) { return Expr; }
@@ -15026,7 +15027,7 @@ SCEVUse ScalarEvolution::applyLoopGuards(SCEVUse Expr, const Loop *L) {
15026
15027
SmallVector<SCEVUse> ExprsToRewrite;
15027
15028
auto CollectCondition = [&](ICmpInst::Predicate Predicate, SCEVUse LHS,
15028
15029
SCEVUse RHS,
15029
- DenseMap<const SCEV * , SCEVUse> &RewriteMap) {
15030
+ DenseMap<SCEVUse , SCEVUse> &RewriteMap) {
15030
15031
// WARNING: It is generally unsound to apply any wrap flags to the proposed
15031
15032
// replacement SCEV which isn't directly implied by the structure of that
15032
15033
// SCEV. In particular, using contextual facts to imply flags is *NOT*
@@ -15396,7 +15397,7 @@ SCEVUse ScalarEvolution::applyLoopGuards(SCEVUse Expr, const Loop *L) {
15396
15397
// Conditions are processed in reverse order, so the earliest conditions is
15397
15398
// processed first. This ensures the SCEVs with the shortest dependency chains
15398
15399
// are constructed first.
15399
- DenseMap<const SCEV * , SCEVUse> RewriteMap;
15400
+ DenseMap<SCEVUse , SCEVUse> RewriteMap;
15400
15401
for (auto [Term, EnterIfTrue] : reverse(Terms)) {
15401
15402
SmallVector<Value *, 8> Worklist;
15402
15403
SmallPtrSet<Value *, 8> Visited;
0 commit comments