@@ -11376,11 +11376,9 @@ bool ScalarEvolution::isKnownPredicateViaConstantRanges(CmpPredicate Pred,
1137611376 if (HasSameValue(LHS, RHS))
1137711377 return ICmpInst::isTrueWhenEqual(Pred);
1137811378
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);
1138411382 return RangeLHS.icmp(Pred, RangeRHS);
1138511383 };
1138611384
@@ -11390,27 +11388,13 @@ bool ScalarEvolution::isKnownPredicateViaConstantRanges(CmpPredicate Pred,
1139011388 return false;
1139111389
1139211390 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))
1140011392 return true;
1140111393 auto *Diff = getMinusSCEV(LHS, RHS);
1140211394 return !isa<SCEVCouldNotCompute>(Diff) && isKnownNonZero(Diff);
1140311395 }
1140411396
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));
1141411398}
1141511399
1141611400bool ScalarEvolution::isKnownPredicateViaNoOverflow(CmpPredicate Pred,
0 commit comments