@@ -11376,11 +11376,9 @@ bool ScalarEvolution::isKnownPredicateViaConstantRanges(CmpPredicate Pred,
11376
11376
if (HasSameValue(LHS, RHS))
11377
11377
return ICmpInst::isTrueWhenEqual(Pred);
11378
11378
11379
- // This code is split out from isKnownPredicate because it is called from
11380
- // within isLoopEntryGuardedByCond.
11381
-
11382
- auto CheckRanges = [&](const ConstantRange &RangeLHS,
11383
- const ConstantRange &RangeRHS) {
11379
+ auto CheckRange = [&](bool IsSigned) {
11380
+ auto RangeLHS = IsSigned ? getSignedRange(LHS) : getUnsignedRange(LHS);
11381
+ auto RangeRHS = IsSigned ? getSignedRange(RHS) : getUnsignedRange(RHS);
11384
11382
return RangeLHS.icmp(Pred, RangeRHS);
11385
11383
};
11386
11384
@@ -11390,27 +11388,13 @@ bool ScalarEvolution::isKnownPredicateViaConstantRanges(CmpPredicate Pred,
11390
11388
return false;
11391
11389
11392
11390
if (Pred == CmpInst::ICMP_NE) {
11393
- auto SL = getSignedRange(LHS);
11394
- auto SR = getSignedRange(RHS);
11395
- if (CheckRanges(SL, SR))
11396
- return true;
11397
- auto UL = getUnsignedRange(LHS);
11398
- auto UR = getUnsignedRange(RHS);
11399
- if (CheckRanges(UL, UR))
11391
+ if (CheckRange(true) || CheckRange(false))
11400
11392
return true;
11401
11393
auto *Diff = getMinusSCEV(LHS, RHS);
11402
11394
return !isa<SCEVCouldNotCompute>(Diff) && isKnownNonZero(Diff);
11403
11395
}
11404
11396
11405
- if (CmpInst::isSigned(Pred)) {
11406
- auto SL = getSignedRange(LHS);
11407
- auto SR = getSignedRange(RHS);
11408
- return CheckRanges(SL, SR);
11409
- }
11410
-
11411
- auto UL = getUnsignedRange(LHS);
11412
- auto UR = getUnsignedRange(RHS);
11413
- return CheckRanges(UL, UR);
11397
+ return CheckRange(CmpInst::isSigned(Pred));
11414
11398
}
11415
11399
11416
11400
bool ScalarEvolution::isKnownPredicateViaNoOverflow(CmpPredicate Pred,
0 commit comments