[Bug debug/68860] [6/7 regression] FAIL: gcc.dg/guality/pr36728-1.c -flto -O3 -g line 16/7 arg1 == 1

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Oct 17 11:20:00 GMT 2016


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

--- Comment #17 from Richard Biener <rguenth at gcc dot gnu.org> ---
I have a fix for that, queued into early LTO debug patches.  But the testcase
still fails...

foo (arg7=arg7@entry=30, arg6=<optimized out>, arg5=<optimized out>, 
    arg4=<optimized out>, arg3=<optimized out>, arg2=<optimized out>, 
    arg1=<optimized out>, arg8=7)
    at
/space/rguenther/src/svn/early-lto-debug/gcc/testsuite/gcc.dg/guality/pr68860-1.c:8
8 foo (int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7,
int arg8)

vs. w/o LTO:

foo (arg7=arg7@entry=30, arg6=6, arg5=5, arg4=4, arg3=3, arg2=2, arg1=1, 
    arg8=7)
    at
/space/rguenther/src/svn/early-lto-debug/gcc/testsuite/gcc.dg/guality/pr68860-1.c:8
8 foo (int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7,
int arg8)

but location info looks good to me:

 <1><1ff>: Abbrev Number: 10 (DW_TAG_subprogram)
    <200>   DW_AT_abstract_origin: <0x2b5>
    <204>   DW_AT_low_pc      : 0x400570
    <20c>   DW_AT_high_pc     : 0x47
    <214>   DW_AT_frame_base  : 1 byte block: 9c        (DW_OP_call_frame_cfa)
    <216>   DW_AT_GNU_all_call_sites: 1
 <2><216>: Abbrev Number: 11 (DW_TAG_formal_parameter)
    <217>   DW_AT_abstract_origin: <0x306>
    <21b>   DW_AT_location    : 0x37 (location list)
 <2><21f>: Abbrev Number: 12 (DW_TAG_formal_parameter)
    <220>   DW_AT_abstract_origin: <0x2fb>
    <224>   DW_AT_location    : 6 byte block: fa 5b 0 0 0 9f   
(DW_OP_GNU_parameter_ref: <0x1b6>; DW_OP_stack_value)

though the DW_OP_GNU_parameter_ref points to an extra indirection:

 <1><189>: Abbrev Number: 3 (DW_TAG_subprogram)
    <18a>   DW_AT_abstract_origin: <0x2b5>
    <18e>   DW_AT_inline      : 1       (inlined)
    <18f>   DW_AT_sibling     : <0x1c6>
 <2><193>: Abbrev Number: 4 (DW_TAG_formal_parameter)
    <194>   DW_AT_abstract_origin: <0x306>
...
 <2><1b6>: Abbrev Number: 4 (DW_TAG_formal_parameter)
    <1b7>   DW_AT_abstract_origin: <0x2fb>

which then ultimatively points to the early debug:

 <1><2b5>: Abbrev Number: 5 (DW_TAG_subprogram)
    <2b6>   DW_AT_name        : foo
    <2ba>   DW_AT_decl_file   : 1
    <2bb>   DW_AT_decl_line   : 8
    <2bc>   DW_AT_prototyped  : 1
    <2bc>   DW_AT_type        : <0x2ae>
    <2c0>   DW_AT_sibling     : <0x32f>
...
 <2><2fb>: Abbrev Number: 6 (DW_TAG_formal_parameter)
    <2fc>   DW_AT_name        : (indirect string, offset: 0x3ac): arg6
    <300>   DW_AT_decl_file   : 1
    <301>   DW_AT_decl_line   : 8
    <302>   DW_AT_type        : <0x2ae>

can't seem to make parameter_ref_descriptor to directly use a reference
to the early created DIE.


More information about the Gcc-bugs mailing list