Make LVI smarter about comparisons with a non-constant. For example, a s< b constraints a to be in [INT_MIN, INT_MAX) range. This is a part of https://llvm.org/bugs/show_bug.cgi?id=28620 fix.
Note that this patch is based on D23200 and few minor refactorings in getValueFromICmpCondition (extraction of RHS, LHS, Predicate locals, renaming NegOffset to Offset) which were not included to simplify the review.
Do you mean icmp ult Val, ...?