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

Peter Bergner <bergner at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |bergner at gcc dot 
gnu.org
      Known to fail|                            |11.0, 12.0
      Known to work|                            |10.0
             Status|UNCONFIRMED                 |ASSIGNED
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2022-03-14

--- Comment #1 from Peter Bergner <bergner at gcc dot gnu.org> ---
We ICE due to having illegal addresses in the MEM passed to the
__builtin_mma_disassemble_acc builtin:

(insn 18 17 0 2 (set (mem:V16QI (plus:DI (and:DI (mult:DI (reg:DI 137)
                        (const_int 32 [0x20]))
                    (const_int 68719476704 [0xfffffffe0]))
                (reg:DI 136)) [0 *_4+0 S16 A128])
        (unspec:V16QI [
                (reg:XO 134 [ *acc_6(D) ])
                (const_int 3 [0x3])
            ] UNSPEC_MMA_EXTRACT)) "ice1.c":6:14 2153 {*mma_disassemble_acc}
     (expr_list:REG_DEAD (reg:DI 137)
        (expr_list:REG_DEAD (reg:DI 136)
            (expr_list:REG_DEAD (reg:XO 134 [ *acc_6(D) ])
                (nil)))))

The problem here is that the mma_disassemble_output_operand predicate is too
lenient on the types of addresses it will accept.  I have a patch which
restricts the addresses accepted which fixes the ICE.  I'm currently regression
testing the patch.

Reply via email to