[Bug debug/52857] DW_OP_GNU_regval_type is generated with INVALID_REGNUM
hjl.tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri Apr 6 13:06:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52857
--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> 2012-04-06 13:05:49 UTC ---
For
(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
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
we have ptr_mode = SImode and Pmode == DImode. However,
arg_pointer_rtx and frame_pointer_rtx are special cases.
They should be allowed even if their mode sizes >
DWARF2_ADDR_SIZE.
More information about the Gcc-bugs
mailing list