According to LangRef, branching on a poison condition is UB, hence the
condition should be guaranteed to not be poison.
This allows us to deduce additional nsw/nuw in some cases.
The changes in test/Transforms/LoopVectorize/consecutive-ptr-uniforms.ll
are required because add nuw %i, -1 means %i can only be 0.
The changes in test/Transforms/LoopUnroll/runtime-small-upperbound.ll
are required, because previously we had a max trip count of 4 and 6
respectively (instead of 3 and 5), because SCEV assumed the additions in
the loops could overflow and the initial value could be just below UMAX,
with the first add overflowing. I also tried to update the test to cover
all possible combinations.