------- Comment #1 from jan dot kratochvil at redhat dot com 2008-11-24 20:08 ------- The excessive item <53> is really still present in Fedora gcc-c++-4.3.2-7.x86_64 but not in HEAD - 4.4.0 20081124:
<1><2d>: Abbrev Number: 2 (DW_TAG_namespace) <2e> DW_AT_name : D <30> DW_AT_decl_file : 1 <31> DW_AT_decl_line : 7 <32> DW_AT_sibling : <0x48> <2><36>: Abbrev Number: 3 (DW_TAG_subprogram) <37> DW_AT_external : 1 <38> DW_AT_name : foo <3c> DW_AT_decl_file : 1 <3d> DW_AT_decl_line : 8 <3e> DW_AT_MIPS_linkage_name: (indirect string, offset: 0x3c): _ZN1D3fooEv <42> DW_AT_type : <0x48> <46> DW_AT_declaration : 1 [...] <1><4f>: Abbrev Number: 5 (DW_TAG_subprogram) <50> DW_AT_specification: <0x36> <54> DW_AT_low_pc : 0x0 <5c> DW_AT_high_pc : 0x17 <64> DW_AT_frame_base : 0x0 (location list) As D::foo() has no extra declaration as it is defined in the class definition <36> and <4f> could be merged but it is only a minor optimization now as for common separate declaration and definition two DIEs still have to exist to have distinct DW_AT_decl_line. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37941