[Bug target/71294] [6/7 Regression] ICE in gen_add2_insn, at optabs.c:4442 on powerpc64le-linux

marxin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu May 26 17:18:00 GMT 2016


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

--- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> ---
tree-dump of the problematic function:

;; Function void fn1() (_Z3fn1v, funcdef_no=6, decl_uid=2937, cgraph_uid=4,
symbol_order=4)

void fn1() ()
{
  struct A a;
  struct C D.3115;
  struct C D.3114;
  struct B e;
  long unsigned int _4;
  vector(2) long unsigned int vect_cst__5;
  long unsigned int _6;
  vector(2) long unsigned int vect_cst__20;

  <bb 2>:
  _6 = (long unsigned int) &e.val;
  vect_cst__20 = {_6, _6};
  _4 = (long unsigned int) &MEM[(void *)&e + 128B];
  vect_cst__5 = {_4, _4};
  MEM[(struct  &)&a] ={v} {CLOBBER};
  a.rows = 4;
  a.cols = 4;
  MEM[(struct  &)&a + 40] ={v} {CLOBBER};
  MEM[(unsigned char * *)&a + 8B] = vect_cst__20;
  MEM[(unsigned char * *)&a + 24B] = vect_cst__5;
  C::C (&D.3114, a);
  F::compute (D.3115);
  D.3114 ={v} {CLOBBER};
  a ={v} {CLOBBER};
  e ={v} {CLOBBER};
  return;

}

236r.ira:

(insn 13 29 33 2 (set (mem/c:V2DI (plus:DI (reg/f:DI 113 sfp)
                (reg:DI 166)) [5 MEM[(unsigned char * *)&a + 8B]+0 S16 A64])
        (vec_select:V2DI (reg:V2DI 163)
            (parallel:V2DI [
                    (const_int 1 [0x1])
                    (const_int 0 [0])
                ]))) /tmp/ice2.ii:29 841 {*vsx_stxvd2x2_le_v2di}
     (expr_list:REG_DEAD (reg:DI 166)
        (expr_list:REG_DEAD (reg:V2DI 163)
            (nil))))

237r.reload:

Reloads for insn # 13
Reload 0: reload_in (DI) = (plus:DI (reg/f:DI 1 1)
                                                    (const_int 240 [0xf0]))
        BASE_REGS, RELOAD_FOR_OPERAND_ADDRESS (opnum = 0)
        reload_in_reg: (plus:DI (reg/f:DI 1 1)
                                                    (const_int 240 [0xf0]))
        reload_reg_rtx: (reg:DI 10 10)
Reload 1: BASE_REGS, RELOAD_FOR_OPERAND_ADDRESS (opnum = 0), optional, can't
combine, secondary_reload_p
Reload 2: GENERAL_REGS, RELOAD_FOR_OPERAND_ADDRESS (opnum = 0), optional, can't
combine, secondary_reload_p
        secondary_out_reload = 1

        secondary_out_icode = reload_v2di_di_store
Reload 3: reload_out (V2DI) = (mem/c:V2DI (plus:DI (plus:DI (reg/f:DI 1 1)
                                                            (const_int 240
[0xf0]))
                                                        (reg:DI 9 9 [166])) [5
MEM[(unsigned char * *)&a + 8B]+0 S16 A64])
        NO_REGS, RELOAD_FOR_OUTPUT (opnum = 0), optional
        reload_out_reg: (mem/c:V2DI (plus:DI (plus:DI (reg/f:DI 1 1)
                                                            (const_int 240
[0xf0]))
                                                        (reg:DI 9 9 [166])) [5
MEM[(unsigned char * *)&a + 8B]
(crashes here)


More information about the Gcc-bugs mailing list