https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90447
--- Comment #2 from Marc Glisse <glisse at gcc dot gnu.org> --- Looking at f3, in combine, for -2, we manage to match (plus:SI (plus:SI (ltu:SI (reg:CCC 17 flags) (const_int 0 [0])) (reg:SI 91)) (const_int -2 [0xfffffffffffffffe]))) while for -1 we fail to match (minus:SI (reg:SI 91) (geu:SI (reg:CCC 17 flags) (const_int 0 [0])))) That is, simplify-rtx replaced x+(a<0)+-1 with x-(a>=0), and there is no such transformation for values other than -1. This last form does not match the usual pattern anymore. I guess the easiest would be to add a specific pattern (yet another one) just for this case...