https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110089
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Alexander Monakov from comment #4) > If 'min' is needed anyway you can use it in subtraction: > > void bar (); > void foo (unsigned int n, unsigned s) > { > do > { > np = MIN (n, s); > bar (np); > } > while (n -= np); > } > > but getting the sub-jcc trick to work should yield more efficient code. It is needed, but using it in the subtraction creates an IV that's not friendly to niter analysis because the step is no longer invariant.