This is a work in progress similar in goal to https://reviews.llvm.org/D44287, but taking a different approach. The idea herein is to identify a path which is provably taken on the fist iteration. At the moment, this covers many of the same test cases as D44287, but in theory, the cases handled are partially non-overlapping. (Note: The tests posted are just the same ones from D44287 at the moment.)
If I decide to pursue this for real, I figured having a proof of concept to motivate the refactoring changes to support efficient implicit control flow reasoning would be worthwhile, thus the WIP patch.
This comment looks out of sync. The method does not return true, and it does not have any ExitBlock as a parameter.