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.