diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp index 24adfa346c642..e535845c9a358 100644 --- a/llvm/lib/Analysis/ScalarEvolution.cpp +++ b/llvm/lib/Analysis/ScalarEvolution.cpp @@ -11380,7 +11380,8 @@ bool ScalarEvolution::isKnownPredicateViaConstantRanges(CmpPredicate Pred, auto CheckRange = [&](bool IsSigned) { auto RangeLHS = IsSigned ? getSignedRange(LHS) : getUnsignedRange(LHS); auto RangeRHS = IsSigned ? getSignedRange(RHS) : getUnsignedRange(RHS); - return RangeLHS.icmp(Pred, RangeRHS); + return RangeLHS.getBitWidth() == RangeRHS.getBitWidth() && + RangeLHS.icmp(Pred, RangeRHS); }; // The check at the top of the function catches the case where the values are