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.

Reply via email to