https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107172
--- Comment #28 from Segher Boessenkool <segher at gcc dot gnu.org> --- > So the issue is with the consumer: > > (insn 50 49 51 2 (parallel [ > (set (reg:SI 93) > (neg:SI (ltu:SI (reg:CCC 17 flags) > (const_int 0 [0])))) > (clobber (reg:CC 17 flags)) > ]) "107172.c":4:10 1258 {*x86_movsicc_0_m1_neg} > (expr_list:REG_DEAD (reg:CCC 17 flags) > (expr_list:REG_UNUSED (reg:CC 17 flags) > (nil)))) > > There are many similar patterns in different backends. They work as long as > the flags register isn't a known constant since simplify-rtx.cc leaves them > alone. They become a problem only when the flags register is a known > constant. Such patterns are fine. The problem is that this consumer of MODE_CC does not fit together with the producer of that reg 17: it only has meaning together, that is how this stuff works; and it has no meaning at all like this.