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

Bernd Edlinger <bernd.edlinger at hotmail dot de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bernd.edlinger at hotmail dot 
de

--- Comment #5 from Bernd Edlinger <bernd.edlinger at hotmail dot de> ---
This is only fixed for inlined subroutines with just one subrange,
but not for the case when a subroutine has multiple subranges,
as in this example:
https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=gdb/testsuite/gdb.cp/step-and-next-inline.cc;h=ac92206fd7f9036b909968b46355bdb8c6861ec3;hb=HEAD

$ gcc -g -O2 step-and-next-inline.cc

here the first invocation of "tree_check" has multiple subranges,
and a redundant lexical block:
 <2><865>: Abbrev Number: 41 (DW_TAG_inlined_subroutine)
    <866>   DW_AT_abstract_origin: <0x955>
    <86a>   DW_AT_entry_pc    : 0x401165
    <872>   DW_AT_GNU_entry_view: 0
    <873>   DW_AT_ranges      : 0x21
    <877>   DW_AT_call_file   : 1
    <878>   DW_AT_call_line   : 52
    <879>   DW_AT_call_column : 10
    <87a>   DW_AT_sibling     : <0x8b9>
 <3><87e>: Abbrev Number: 8 (DW_TAG_formal_parameter)
    <87f>   DW_AT_abstract_origin: <0x966>
    <883>   DW_AT_location    : 0x37 (location list)
    <887>   DW_AT_GNU_locviews: 0x35
 <3><88b>: Abbrev Number: 8 (DW_TAG_formal_parameter)
    <88c>   DW_AT_abstract_origin: <0x96e>
    <890>   DW_AT_location    : 0x46 (location list)
    <894>   DW_AT_GNU_locviews: 0x44
 <3><898>: Abbrev Number: 42 (DW_TAG_lexical_block)
    <899>   DW_AT_ranges      : 0x21

while the other invocations look like:

 <2><8b9>: Abbrev Number: 44 (DW_TAG_inlined_subroutine)
    <8ba>   DW_AT_abstract_origin: <0x955>
    <8be>   DW_AT_entry_pc    : 0x401177
    <8c6>   DW_AT_GNU_entry_view: 0
    <8c7>   DW_AT_low_pc      : 0x401177
    <8cf>   DW_AT_high_pc     : 0xa
    <8d7>   DW_AT_call_file   : 1
    <8d8>   DW_AT_call_line   : 53
    <8d9>   DW_AT_call_column : 10
    <8da>   DW_AT_sibling     : <0x906>

... and happen to be fixed by :

https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=ac02e5b75451cc3c6ae9028338183bcdcb056ea2

This is not a big issue, but the duplicated variables
show up only while stepping thru the first invocation:

$ gdb a.out
[...]
Breakpoint 1, main () at step-and-next-inline.cc:64
64        get_alias_set (&xx);  /* Beginning of main */
(gdb) s
get_alias_set (t=t@entry=0x404020 <xx>) at step-and-next-inline.cc:51
51        if (t != NULL
(gdb) s
52            && TREE_TYPE (t).z != 1
(gdb) s
tree_check (t=0x404020 <xx>, i=0) at step-and-next-inline.cc:40
40        if (t->x != i)
(gdb) info locals
x = <optimized out>
x = <optimized out>
(gdb) 

I have a patch...

Reply via email to