https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117875
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Richard Biener from comment #7) > I'm talking about the number of iterations of the second loop (after loop > splitting), the niter expression is (unsigned int) M_9(D) - (unsigned int) > k_24. > We know k_29 == M_9(D) when exiting the first loop, so on that entry the > expression computes zero. For the case the first loop is short-cut we know > M_9(D) == 1 and thus the difference is zero as well. > > So I expect the range of (unsigned int) M_9(D) - (unsigned int) k_2 to be > [0,0]. > > But maybe I'm missing something? I guess the issue is that with # k_24 = PHI <1(13), k_29(16)> to easily see this we'd have to compute the range of (unsigned int) M_9(D) - 1 and the range of (unsigned int) M_9(D) - (unsigned) k_29 and then see those are the same singleton. I don't think we can arrive here when using the range of k_24 itself, so maybe I'm asking too much of VRP here.