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

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
ira-costs.c record_operand_costs is stripping off the SUBREG. Is that even
valid thing to do?


  for (i = 0; i < recog_data.n_operands; i++)
    {
      rtx op_mem = extract_mem_from_operand (recog_data.operand[i]);
      memcpy (op_costs[i], init_cost, struct_costs_size);

      if (GET_CODE (recog_data.operand[i]) == SUBREG)
        recog_data.operand[i] = SUBREG_REG (recog_data.operand[i]);



Here is the instruction which is causing the ICE and is valid with the subreg
there:
(insn 7 6 0 2 (prefetch (subreg:DI (reg:V2DI 96) 0)
        (const_int 0 [0])
        (const_int 3 [0x3])) "t.c":4:3 26 {prefetch}
     (expr_list:REG_DEAD (reg:V2DI 96)
        (nil)))

I have to wonder if the stripping off the subreg is valid or not.

Reply via email to