https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108757
--- Comment #7 from Peter Bergner <bergner at gcc dot gnu.org> --- (In reply to Segher Boessenkool from comment #6) > No? Take a=59 as counterexample: > > (a - (N*M)) / N + M = (59 - 2*30)/30 + 2 = ~0UL/30 + 2 For unsigned integers, isn't having a < N*M UB so we're free to do as we wish for either the optimized and non-optimized sequences? Meaning, can't we assume here that a >= N*M?