This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: DWARF patch to reduce the number of inter-CU refs
- From: Cary Coutant <ccoutant at google dot com>
- To: Jason Merrill <jason at redhat dot com>
- Cc: gcc-patches List <gcc-patches at gcc dot gnu dot org>, Jakub Jelinek <jakub at redhat dot com>
- Date: Thu, 3 May 2012 13:17:07 -0700
- Subject: Re: DWARF patch to reduce the number of inter-CU refs
- References: <4FA2E224.8070604@redhat.com>
> Incidentally, I notice that we have unnecessary duplication in the type
> units. ?For instance, with nested-3.C:
>
> ? ? ? ?.uleb128 0x2 ? ?# (DIE (0x25) DW_TAG_namespace)
> ? ? ? ?.long ? .LASF0 ?# DW_AT_name: "thread"
> ? ? ? ? ? ? ? ? ? ? ? ?# DW_AT_declaration
> ? ? ? ?.long ? 0x34 ? ?# DW_AT_sibling
> ? ? ? ?.uleb128 0x3 ? ?# (DIE (0x2e) DW_TAG_class_type)
> ? ? ? ?.long ? .LASF1 ?# DW_AT_name: "Executor"
> ? ? ? ? ? ? ? ? ? ? ? ?# DW_AT_declaration
> ? ? ? ?.byte ? 0 ? ? ? # end of children of DIE 0x25
> ? ? ? ?.uleb128 0x4 ? ?# (DIE (0x34) DW_TAG_class_type)
> ? ? ? ?.long ? .LASF1 ?# DW_AT_name: "Executor"
> ? ? ? ?.byte ? 0x1 ? ? # DW_AT_byte_size
> ? ? ? ?.byte ? 0x1 ? ? # DW_AT_decl_file (nested-3.C)
> ? ? ? ?.byte ? 0x6 ? ? # DW_AT_decl_line
> ? ? ? ?.long ? 0x2e ? ?# DW_AT_specification
> ? ? ? ?.long ? 0x55 ? ?# DW_AT_sibling
>
> This declaration/specification separation seems to be deliberate in
> copy_declaration_context, but I don't see any reason for it; what was the
> rationale?
I believe I was just replicating the existing practice of putting
definitions at the top level, with a DW_AT_specification pointing to a
declaration DIE within the namespace/class hierarchy when necessary. I
remember there was a comment somewhere in dwarf2out.c that suggested
GDB relies on this, but that may be totally out of date, and I can't
find it now.
-cary