https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101145
--- Comment #6 from Jiu Fu Guo <guojiufu at gcc dot gnu.org> --- > As tests, for below loop, adjust_cond_for_loop_until_wrap return false: > > foo (int *__restrict__ a, int *__restrict__ b, unsigned i) > { > while (++i > 100) > *a++ = *b++ + 1; > } For the above code, niter still may be zero: e.g. "i < 100" at the start. For the below code, niter can be determined as constant at compiling time. > > For below code, adjust_cond_for_loop_until_wrap returns true: > i = UINT_MAX - 200; > while (++i > 100) > *a++ = *b++ + 1; For below code, niter is also may be zero: e.g. "UINT_MAX - 100 < n" . i = UINT_MAX - 200 while (++i > n) *a++ = *b++ + 1;