https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82666

--- Comment #13 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I don't know if this could help here but combine does produce:
Trying 37, 34 -> 38:
   37: flags:CCGC=cmp(r82:SI,0x7f)
      REG_DEAD r82:SI
   34: {r92:DI=r87:DI+r89:DI;clobber flags:CC;}
      REG_DEAD r89:DI
      REG_UNUSED flags:CC
   38: r87:DI={(flags:CCGC>0)?r92:DI:r87:DI}
      REG_DEAD r92:DI
      REG_DEAD flags:CCGC
Failed to match this instruction:
(set (reg/v:DI 87 [ <retval> ])
    (plus:DI (mult:DI (gt:DI (reg:SI 82 [ _4 ])
                (const_int 127 [0x7f]))
            (reg:DI 89 [ _4 ]))
        (reg/v:DI 87 [ <retval> ])))

I don't know if we could catch this in the backend and split this into 3
instructions if that would do the right thing ...

Reply via email to