[Delinearization] Remove `isKnownLessThan` (#171821)
Delinearization has `isKnownLessThan(a, b)` function to check if `a < b`
is known at compile time. To check the predicate, it calls
`isKnownNegative(a - b)`. There are at least two issues with this
approach:
- It mixed up a signed interpretation with an unsigned one.
- It doesn't consider overflow.
This function includes some additional logic, which suffers from the
same issues. This patch replace the call to `isKnownLessThan(a, b)` with
`ScalarEvolution::isKnownPredicate(ICmpInst::ICMP_SLT, a, b)` and
removes the former function entirely, since using it is risky and may
lead to incorrect results.
Resolve #169812