dwarf2out multiple CU patch

Jason Merrill jason@redhat.com
Mon Aug 28 21:46:00 GMT 2000


>>>>> Daniel Berlin <dberlin@redhat.com> writes:

 > Errr, i also just noticed you missed the 
 > if (flag_eliminate_dwarf2_dups)
 > break_out_includes part of my patch.
 > Without this, you are always eliminating the duplicates.

I moved the test into dwarf2out_{start,end}_source_file; that way we don't
get the [BE]INCL DIEs in the output.  Though I suppose we might as well not
bother with break_out_includes if it won't find anything...

 > Also, you changed process_die_checksum back to the way you had it, which
 > also included the compile unit die in the checksum.
 > This is a bad idea, because it means since the version info goes into the
 > producer string, you have to compile thigns with the exact same version to
 > eliminate duplicates (IE if you update your gcc every day, your stuff will
 > be bloated).

That makes sense.  I'll change it to ignore DW_AT_producer.

Index: 2000-08-28  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (attr_checksum): Also ignore DW_AT_producer.

2000-08-28  Daniel Berlin  <dberlin@redhat.com>

	* dwarf2out.c (dwarf2out_finish): Don't bother calling
	break_out_includes if it won't do anything.

dwarf2out.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/dwarf2out.c,v
retrieving revision 1.199
diff -c -p -r1.199 dwarf2out.c
*** dwarf2out.c	2000/08/29 00:29:24	1.199
--- dwarf2out.c	2000/08/29 02:02:27
*************** attr_checksum (at, ctx)
*** 5054,5060 ****
    PROCESS (at->dw_attr);
  
    /* We don't care about differences in file numbering.  */
!   if (at->dw_attr == DW_AT_decl_file)
      return;
  
    switch (AT_class (at))
--- 5054,5063 ----
    PROCESS (at->dw_attr);
  
    /* We don't care about differences in file numbering.  */
!   if (at->dw_attr == DW_AT_decl_file
!       /* Or that this was compiled with a different compiler snapshot; if
! 	 the output is the same, that's what matters.  */
!       || at->dw_attr == DW_AT_producer)
      return;
  
    switch (AT_class (at))
*************** dwarf2out_finish ()
*** 10841,10847 ****
  
    /* Generate separate CUs for each of the include files we've seen.
       They will go into limbo_die_list.  */
!   break_out_includes (comp_unit_die);
  
    /* Traverse the DIE's and add add sibling attributes to those DIE's
       that have children.  */
--- 10844,10851 ----
  
    /* Generate separate CUs for each of the include files we've seen.
       They will go into limbo_die_list.  */
!   if (flag_eliminate_dwarf2_dups)
!     break_out_includes (comp_unit_die);
  
    /* Traverse the DIE's and add add sibling attributes to those DIE's
       that have children.  */


More information about the Gcc-patches mailing list