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.
I don't understand this line of the diff. Can you remove for the moment, and do this in a separate change?
The mixed usage of OrigStart and Start here is confusing.