[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