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...

Reply via email to