http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59311

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |vmakarov at redhat dot com
          Component|c++                         |rtl-optimization

--- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> ---
It looks like a LRA bug on x86.  x.ii.212r.ira has

insn/f 202 3 2 2 (set (reg:SI 177) 
        (reg:SI 2 cx)) 86 {*movsi_internal}
     (expr_list:REG_DEAD (reg:SI 2 cx)
        (expr_list:REG_CFA_SET_VDRAP (reg:SI 177) 
            (nil))))

x.ii.213r.reload has

(insn/f 202 3 2 2 (set (mem/c:SI (plus:SI (reg/f:SI 6 bp)
                (const_int -48 [0xffffffffffffffd0])) [0 %sfp+-48 S4 A32])
        (reg:SI 2 cx)) 86 {*movsi_internal}
     (expr_list:REG_CFA_SET_VDRAP (reg:SI 177) 
        (nil)))

Should the REG_CFA_SET_VDRAP note be dropped or should
dwarf2out_frame_debug handle

(gdb) call debug_rtx (insn)
(insn/f 202 254 2 2 (set (mem/c:SI (plus:SI (reg/f:SI 6 bp)
                (const_int -48 [0xffffffffffffffd0])) [0 %sfp+-48 S4 A32])
        (reg:SI 2 cx)) 86 {*movsi_internal}
     (expr_list:REG_CFA_SET_VDRAP (reg:SI 177)
        (nil)))
(gdb) 

in
     case REG_CFA_SET_VDRAP:
        n = XEXP (note, 0);
        if (REG_P (n)) 
          {
            dw_fde_ref fde = cfun->fde;
            if (fde)
              {
                gcc_assert (fde->vdrap_reg == INVALID_REGNUM);
                if (REG_P (n)) 
                  fde->vdrap_reg = dwf_regno (n); 
              }
          }
        handled_one = true;
        break;

Reply via email to