[Bug lto/47799] LTO debug info for early inlined functions missing

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Oct 1 10:58:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47799

--- Comment #5 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-10-01 10:58:06 UTC ---
If we arrange for "minimal" support, thus output BLOCK_ABSTRACT_ORIGIN/LOCATION
only if it is a FUNCTION_DECL (thus, try to handle 1-level inlining only) then
we run into the issue that if the function isn't materialized in the same
LTRANS unit then it's DECL_INITIAL is NULL_TREE and thus dwarf2out_decl
doesn't do anything and we end up with

 <2><166>: Abbrev Number: 5 (DW_TAG_inlined_subroutine)
    <16b>   DW_AT_low_pc      : 0x40058c        
    <173>   DW_AT_high_pc     : 0xa     
    <17b>   DW_AT_call_file   : 1       
    <17c>   DW_AT_call_line   : 6       

We can of course "fix" dwarf2out.c to not look at DECL_INITIAL (which it
does as a "fix" for the C frontends extern inline functions ...) but
at for example DECL_ABSTRACT (when we are called from inline generation
and nothing output the abstract function DIE already).  Then we finally
get the desired

 <2><166>: Abbrev Number: 5 (DW_TAG_inlined_subroutine)
    <167>   DW_AT_abstract_origin: <0x190>      
    <16b>   DW_AT_low_pc      : 0x40058c        
    <173>   DW_AT_high_pc     : 0xa     
    <17b>   DW_AT_call_file   : 1       
    <17c>   DW_AT_call_line   : 6       

with a proper abstract origin and we can break on the inlined function.



More information about the Gcc-bugs mailing list