https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65250
--- Comment #1 from Oleg Endo ---
The patch attachment 36012 for PR 54236 improves the treg_set_expr machinery by
doing proper comparison inversion, instead of trying only EQ <-> NE. This will
be the prerequisite to match a
(set (reg:SI 168)
(leu:SI (reg:SI 4 r4 [ value ])
(const_int 2 [0x2])))
with a treg_set_expr.
As for the multiple-set negc movrt insn, it's probably better to get rid of
that altogether. Its main purpose is to indicate that the T reg is clobbered
by the negc and to get a little bit of constant sharing of the -1 constant. If
constant optimization is done after split1, this will be not necessary anymore.
In some cases, a sett insn after a negc with constant -1 can be optimized
away. To keep this, a negc insn that initially clobbers the T reg should be
converted to the full multiple-set negc insn "negc" after combine/split1. Then
the clrt_sett optimization pass (PR 53976) should be extended to understand
addc, subc and negc insns which involve constants, to figure out whether a clrt
or sett is really needed. Before that PR 67459 needs to be fixed.