Index: llvm/lib/Analysis/ScalarEvolution.cpp =================================================================== --- llvm/lib/Analysis/ScalarEvolution.cpp +++ llvm/lib/Analysis/ScalarEvolution.cpp @@ -9720,8 +9720,23 @@ if (isImpliedCondOperands(Pred, LHS, RHS, V, getConstant(Min))) return true; + break; + + // `LHS < RHS` is handled in the same way as `RHS > LHS`. + case ICmpInst::ICMP_SLE: + case ICmpInst::ICMP_ULE: + if (isImpliedCondOperands(CmpInst::getSwappedPredicate(Pred), RHS, + LHS, V, getConstant(SharperMin))) + return true; LLVM_FALLTHROUGH; + case ICmpInst::ICMP_SLT: + case ICmpInst::ICMP_ULT: + if (isImpliedCondOperands(CmpInst::getSwappedPredicate(Pred), RHS, + LHS, V, getConstant(Min))) + return true; + break; + default: // No change break;