This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: PR debug/52857: DW_OP_GNU_regval_type is generated with INVALID_REGNUM


On Fri, Apr 6, 2012 at 6:30 AM, H.J. Lu <hongjiu.lu@intel.com> wrote:
> Hi,
>
> With ptr_mode = SImode and Pmode == DImode, given
>
> (note 21 8 17 2 (expr_list:REG_DEP_TRUE (concat:SI (reg:SI 5 di)
> ? ? ? ?(subreg:SI (plus:DI (reg/f:DI 16 argp)
> ? ? ? ? ? ? ? ?(const_int -20 [0xffffffffffffffec])) 0))
> ? ?(nil)) NOTE_INSN_CALL_ARG_LOCATION)
>
> when
>
> (plus:DI (reg/f:DI 16 argp)
> ? ?(const_int -20 [0xffffffffffffffec]))
>
> reaches mem_loc_descriptor:
>
> ? case PLUS:
> ? ?plus:
> ? ? ?if (is_based_loc (rtl)
> ? ? ? ? ?&& GET_MODE_SIZE (mode) <= DWARF2_ADDR_SIZE
> ? ? ? ? ?&& GET_MODE_CLASS (mode) == MODE_INT)
> ? ? ? ?mem_loc_result = based_loc_descr (XEXP (rtl, 0),
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?INTVAL (XEXP (rtl, 1)),
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?VAR_INIT_STATUS_INITIALIZED);
> ? ? ?else
>
> it fails "GET_MODE_SIZE (mode) <= DWARF2_ADDR_SIZE" since mode is DImode
> and DWARF2_ADDR_SIZE is 4. ?arg_pointer_rtx and frame_pointer_rtx are
> special cases. ?They should be allowed for based_loc_descr even if their
> mode sizes > DWARF2_ADDR_SIZE. ?OK for trunk?
>

I missed another place where arg_pointer_rtx and frame_pointer_rtx should
be allowed	for based_loc_descr.   Tested on Linux/ia32, Linux/x86-64 and
Linux/x32.  OK for trunk?

Thanks.


-- 
H.J.

Attachment: gcc-pr52857-2.patch
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]