This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: dwarf2out patch: support TYPE_DECL_SUPPRESS_DEBUG


Oops, forgot this piece:

1999-11-24  Jason Merrill  <jason@casey.cygnus.com>

	* search.c (note_debug_info_needed): Do perform this optimization
	for dwarf2.  
	(maybe_suppress_debug_info): Likewise.  Start by clearing
	TYPE_DECL_SUPPRESS_DEBUG.

Index: search.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/search.c,v
retrieving revision 1.131
diff -c -p -r1.131 search.c
*** search.c	1999/11/16 01:37:39	1.131
--- search.c	1999/11/25 02:29:08
*************** get_vbase_types (type)
*** 2912,2930 ****
  /* Debug info for C++ classes can get very large; try to avoid
     emitting it everywhere.
  
!    As it happens, this optimization wins even when the target supports
!    BINCL (though only slightly), so we always do it. */
  
  void
  maybe_suppress_debug_info (t)
       tree t;
  {
!   /* We don't bother with this for dwarf1, which shouldn't be used for C++
!      anyway.  */
!   if (write_symbols == DWARF_DEBUG || write_symbols == DWARF2_DEBUG
!       || write_symbols == NO_DEBUG)
      return;
  
    /* If we already know how we're handling this class, handle debug info
       the same way.  */
    if (CLASSTYPE_INTERFACE_ONLY (t))
--- 2912,2939 ----
  /* Debug info for C++ classes can get very large; try to avoid
     emitting it everywhere.
  
!    Note that this optimization wins even when the target supports
!    BINCL (if only slightly), and reduces the amount of work for the
!    linker.  */
  
  void
  maybe_suppress_debug_info (t)
       tree t;
  {
!   /* We can't do the usual TYPE_DECL_SUPPRESS_DEBUG thing with DWARF, which
!      does not support name references between translation units.  It supports
!      symbolic references between translation units, but only within a single
!      executable or shared library.
! 
!      For DWARF 2, we handle TYPE_DECL_SUPPRESS_DEBUG by pretending
!      that the type was never defined, so we only get the members we
!      actually define.  */
!   if (write_symbols == DWARF_DEBUG || write_symbols == NO_DEBUG)
      return;
  
+   /* We might have set this earlier in cp_finish_decl.  */
+   TYPE_DECL_SUPPRESS_DEBUG (TYPE_MAIN_DECL (t)) = 0;
+ 
    /* If we already know how we're handling this class, handle debug info
       the same way.  */
    if (CLASSTYPE_INTERFACE_ONLY (t))
*************** note_debug_info_needed (type)
*** 2962,2973 ****
      /* We can't go looking for the base types and fields just yet.  */
      return;
  
!   /* We can't do the TYPE_DECL_SUPPRESS_DEBUG thing with DWARF, which
!      does not support name references between translation units.  It supports
!      symbolic references between translation units, but only within a single
!      executable or shared library.  */
!   if (write_symbols == DWARF_DEBUG || write_symbols == DWARF2_DEBUG
!       || write_symbols == NO_DEBUG)
      return;
  
    dfs_walk (TYPE_BINFO (type), dfs_debug_mark, dfs_debug_unmarkedp, 0);
--- 2971,2978 ----
      /* We can't go looking for the base types and fields just yet.  */
      return;
  
!   /* See the comment in maybe_suppress_debug_info.  */
!   if (write_symbols == DWARF_DEBUG || write_symbols == NO_DEBUG)
      return;
  
    dfs_walk (TYPE_BINFO (type), dfs_debug_mark, dfs_debug_unmarkedp, 0);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]