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

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2018-08-08
                 CC|                            |segher at gcc dot gnu.org
   Target Milestone|---                         |9.0
     Ever confirmed|0                           |1

--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> ---
Confirmed, combine creates invalid RTX:

Trying 11, 13 -> 14:
   11: {r95:HI=r92:QI#0&0xffffffffffffff00;clobber flags:CC;}
      REG_UNUSED flags:CC
      REG_DEAD r92:QI
   13: {r97:HI=r95:HI^0x101;clobber flags:CC;}
      REG_UNUSED flags:CC
      REG_DEAD r95:HI
   14: r92:QI=r97:HI#0
Failed to match this instruction:
(parallel [
        (set (clobber:QI (const_int 0 [0]))
            (const_int 1 [0x1]))
        (set (reg:HI 97)
            (xor:HI (and:HI (subreg:HI (reg:QI 92 [ <retval> ]) 0)
                    (const_int -256 [0xffffffffffffff00]))
                (const_int 257 [0x101])))
    ])
Failed to match this instruction:
(parallel [
        (set (clobber:QI (const_int 0 [0]))
            (const_int 1 [0x1]))
        (set (reg:HI 97)
            (xor:HI (and:HI (subreg:HI (reg:QI 92 [ <retval> ]) 0)
                    (const_int -256 [0xffffffffffffff00]))
                (const_int 257 [0x101])))
    ])

This part:

        (set (clobber:QI (const_int 0 [0]))
            (const_int 1 [0x1]))

is invalid and triggers assert in reg_overlap_mentioned_p.

Reply via email to