http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48853
--- Comment #12 from H.J. Lu <hjl.tools at gmail dot com> 2011-05-04 17:24:24
UTC ---
(In reply to comment #11)
> Created attachment 24183 [details]
> gcc47-pr48853.patch
>
> Is this better?
No, it doesn't handle DW_OP_GNU_const_type:
(gdb) f 0
#0 mem_loc_descriptor (rtl=0x7ffff0de42f0, mode=DImode, mem_mode=DImode,
initialized=VAR_INIT_STATUS_INITIALIZED)
at /export/gnu/import/git/gcc-x32/gcc/dwarf2out.c:14350
14350 mem_loc_result = new_loc_descr (DW_OP_GNU_const_type, 0,
(gdb) bt
#0 mem_loc_descriptor (rtl=0x7ffff0de42f0, mode=DImode, mem_mode=DImode,
initialized=VAR_INIT_STATUS_INITIALIZED)
at /export/gnu/import/git/gcc-x32/gcc/dwarf2out.c:14350
#1 0x0000000000b3b39d in mem_loc_descriptor (rtl=0x7ffff0d47f90, mode=DImode,
mem_mode=DImode, initialized=VAR_INIT_STATUS_INITIALIZED)
at /export/gnu/import/git/gcc-x32/gcc/dwarf2out.c:14212
#2 0x0000000000b1bed6 in dwarf2out_frame_debug_cfa_expression (
set=0x7ffff0d47fc0, label=0x4a8ee40 "<do not output>")
at /export/gnu/import/git/gcc-x32/gcc/dwarf2out.c:2088
#3 0x0000000000b1d605 in dwarf2out_frame_debug (insn=0x7ffff0d45a20,
after_p=1 '\001') at /export/gnu/import/git/gcc-x32/gcc/dwarf2out.c:2870
#4 0x0000000000c9a66c in final_scan_insn (insn=0x7ffff0d45a20,
file=0x4c05540, optimize_p=2, nopeepholes=0, seen=0x7fffffffddac)
at /export/gnu/import/git/gcc-x32/gcc/final.c:2775
#5 0x0000000000c98ae7 in final (first=0x7ffff0ce95c0, file=0x4c05540,
optimize_p=2) at /export/gnu/import/git/gcc-x32/gcc/final.c:1795
#6 0x0000000000c9cfb4 in rest_of_handle_final ()
at /export/gnu/import/git/gcc-x32/gcc/final.c:4246
#7 0x000000000133ac82 in execute_one_pass (pass=0x4a80a00)
at /export/gnu/import/git/gcc-x32/gcc/passes.c:1556
#8 0x000000000133ae71 in execute_pass_list (pass=0x4a80a00)
at /export/gnu/import/git/gcc-x32/gcc/passes.c:1611
#9 0x000000000133ae92 in execute_pass_list (pass=0x4a813e0)
---Type <return> to continue, or q <return> to quit---q
at /export/gnu/impoQuit
(gdb) f 1
#1 0x0000000000b3b39d in mem_loc_descriptor (rtl=0x7ffff0d47f90, mode=DImode,
mem_mode=DImode, initialized=VAR_INIT_STATUS_INITIALIZED)
at /export/gnu/import/git/gcc-x32/gcc/dwarf2out.c:14212
14212 dw_loc_descr_ref mem_loc_result2
(gdb) call debug_rtx (rtl)
(plus:DI (reg/f:DI 6 bp)
(const_int -24 [0xffffffffffffffe8]))
(gdb)
We need to check all those new DW_OP_GNU_xxxx ops.