If we have an instruction "add nsw (IV - Stride), Stride" feeding into the icmp, we know Start - Stride doesn't overflow.
It's unfortunate we can't deduce this more directly, but we don't really have any SCEV infrastructure to support this sort of check.
clang-format: please reformat the code
-ScalarEvolution::ExitLimit -ScalarEvolution::howManyLessThans(const SCEV *LHS, const SCEV *RHS, - const Loop *L, bool IsSigned, - bool ControlsExit, bool AllowPredicates, - ICmpInst *OrigCond) { +ScalarEvolution::ExitLimit ScalarEvolution::howManyLessThans( + const SCEV *LHS, const SCEV *RHS, const Loop *L, bool IsSigned, + bool ControlsExit, bool AllowPredicates, ICmpInst *OrigCond) {