Makefile.in (toplev.o, [...]): Don't depend on dwarfout.h.
authorNeil Booth <neil@daikokuya.demon.co.uk>
Thu, 19 Jul 2001 06:22:04 +0000 (06:22 +0000)
committerNeil Booth <neil@gcc.gnu.org>
Thu, 19 Jul 2001 06:22:04 +0000 (06:22 +0000)
* Makefile.in (toplev.o, dwarfout.o, final.o): Don't depend on
dwarfout.h.
* dbxout.c (dbxout_function): Rename dbxout_funciton_decl, move
to conditionally compiled block.
(dbx_debug_hooks, xcoff_debug_hooks): Update.
* dbxout.h (dbxout_function): Remove.
* debug.c (do_nothing_debug_hooks): Update.
* debug.h (struct gcc_debug_hooks): New hooks function_decl,
global_decl, deferred_inline_function.
* dwarf2out.c (dwarf2_debug_hooks): Update.
(dwarf2out_global_decl): New.
* dwarfout.c: Don't include dwarfout.h.
(dwarfout_global_decl, dwarfout_function_decl,
dwarfout_deferred_inline_function): New.
(dwarf_debug_hooks): Update.
* dwarfout.h: Remove.
* final.c: Don't include dwarfout.h.
* sdbout.c (sdbout_global_decl): New.
(sdbout_debug_hooks): Update.
* toplev.c: Don't include dwarfout.h.
(check_global_declarations, rest_of_compilation): Use new debug hooks.
(note_deferral_of_defined_inline_function): Remove.
* toplev.h (note_deferral_of_defined_inline_function): Remove.
* ch/Makefile.in (lex.o): No dependence on dwarfout.h.
* ch/lex.c: Don't include dwarfout.h.
* cp/Make-lang.in (decl2.o): No dependence on dwarfout.h, dwarf2out.h.
(semantics.o, optimize.o): Depend on debug.h not dwarfout.h.
* cp/decl2.c: Don't include dwarfout.h and dwarf2out.h.
* cp/optimize.c: Include debug.h.
(maybe_clone_body): Use debug hook.
* cp/semantics.c: Include debug.h.
(expand_body): Use debug hook.
* po/POTFILES.in: Remove dwarfout.h.

From-SVN: r44145

22 files changed:
gcc/ChangeLog
gcc/Makefile.in
gcc/ch/ChangeLog
gcc/ch/Makefile.in
gcc/ch/lex.c
gcc/cp/ChangeLog
gcc/cp/Make-lang.in
gcc/cp/decl2.c
gcc/cp/optimize.c
gcc/cp/semantics.c
gcc/dbxout.c
gcc/dbxout.h
gcc/debug.c
gcc/debug.h
gcc/dwarf2out.c
gcc/dwarfout.c
gcc/dwarfout.h [deleted file]
gcc/final.c
gcc/po/POTFILES.in
gcc/sdbout.c
gcc/toplev.c
gcc/toplev.h

index 27678b431389172ebeafafca2f6f6a4e6a0343b9..c24d83eac13b1ea93dca5f45cd95546829986dd0 100644 (file)
@@ -1,3 +1,39 @@
+2001-07-19  Neil Booth  <neil@daikokuya.demon.co.uk>
+
+       * Makefile.in (toplev.o, dwarfout.o, final.o): Don't depend on
+       dwarfout.h.
+       * dbxout.c (dbxout_function): Rename dbxout_funciton_decl, move
+       to conditionally compiled block.
+       (dbx_debug_hooks, xcoff_debug_hooks): Update.
+       * dbxout.h (dbxout_function): Remove.
+       * debug.c (do_nothing_debug_hooks): Update.
+       * debug.h (struct gcc_debug_hooks): New hooks function_decl,
+       global_decl, deferred_inline_function.
+       * dwarf2out.c (dwarf2_debug_hooks): Update.
+       (dwarf2out_global_decl): New.
+       * dwarfout.c: Don't include dwarfout.h.
+       (dwarfout_global_decl, dwarfout_function_decl,
+       dwarfout_deferred_inline_function): New.
+       (dwarf_debug_hooks): Update.
+       * dwarfout.h: Remove.
+       * final.c: Don't include dwarfout.h.
+       * sdbout.c (sdbout_global_decl): New.
+       (sdbout_debug_hooks): Update.
+       * toplev.c: Don't include dwarfout.h.
+       (check_global_declarations, rest_of_compilation): Use new debug hooks.
+       (note_deferral_of_defined_inline_function): Remove.
+       * toplev.h (note_deferral_of_defined_inline_function): Remove.
+       * ch/Makefile.in (lex.o): No dependence on dwarfout.h.
+       * ch/lex.c: Don't include dwarfout.h.
+       * cp/Make-lang.in (decl2.o): No dependence on dwarfout.h, dwarf2out.h.
+       (semantics.o, optimize.o): Depend on debug.h not dwarfout.h.
+       * cp/decl2.c: Don't include dwarfout.h and dwarf2out.h.
+       * cp/optimize.c: Include debug.h.
+       (maybe_clone_body): Use debug hook.
+       * cp/semantics.c: Include debug.h.
+       (expand_body): Use debug hook.
+       * po/POTFILES.in: Remove dwarfout.h.
+
 2001-07-19  Neil Booth  <neil@daikokuya.demon.co.uk>
 
        * c-lex.c (c_lex): Remove CPP_INT, CPP_FLOAT cases.
index 4fcba9bab0bdf78a14fd6714c76bfda57c2754c7..5b90382a58254554eee2f6076ba6bda37d7786c0 100644 (file)
@@ -1340,7 +1340,7 @@ diagnostic.o : diagnostic.c diagnostic.h diagnostic.def \
    $(GGC_H) input.h $(INSN_ATTR_H) insn-config.h toplev.h intl.h
 toplev.o : toplev.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) function.h \
    flags.h input.h $(INSN_ATTR_H) xcoffout.h output.h diagnostic.h \
-   debug.h insn-config.h intl.h $(RECOG_H) Makefile toplev.h dwarfout.h \
+   debug.h insn-config.h intl.h $(RECOG_H) Makefile toplev.h \
    dwarf2out.h sdbout.h dbxout.h $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) \
    graph.h $(LOOP_H) except.h $(REGS_H) $(TIMEVAR_H) $(lang_options_files) \
    ssa.h $(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h
@@ -1401,7 +1401,7 @@ sdbout.o : sdbout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \
    insn-config.h $(OBSTACK_H) xcoffout.h c-pragma.h ggc.h \
    sdbout.h toplev.h $(TM_P_H) except.h debug.h
 dwarfout.o : dwarfout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) dwarf.h \
-   flags.h insn-config.h reload.h output.h toplev.h dwarfout.h $(TM_P_H) \
+   flags.h insn-config.h reload.h output.h toplev.h $(TM_P_H) \
    debug.h
 dwarf2out.o : dwarf2out.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) dwarf2.h \
    debug.h flags.h insn-config.h reload.h output.h diagnostic.h \
@@ -1524,7 +1524,7 @@ sched-vis.o : sched-vis.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) sched-int.h \
 final.o : final.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h intl.h \
    $(REGS_H) $(RECOG_H) conditions.h insn-config.h $(INSN_ATTR_H) function.h \
    real.h output.h hard-reg-set.h except.h debug.h \
-   xcoffout.h toplev.h reload.h dwarfout.h dwarf2out.h sdbout.h \
+   xcoffout.h toplev.h reload.h dwarf2out.h sdbout.h \
    dbxout.h $(BASIC_BLOCK_H) $(TM_P_H) $(TARGET_H)
 recog.o : recog.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) function.h $(BASIC_BLOCK_H) \
    $(REGS_H) $(RECOG_H) $(EXPR_H) hard-reg-set.h flags.h insn-config.h \
index 694ecf459e01c64c3c4c15ac3578e1d29b0e3fad..d2421059f411cb4c6712ccb75f5f2d1fbf3a2724 100644 (file)
@@ -1,3 +1,8 @@
+2001-07-19  Neil Booth  <neil@daikokuya.demon.co.uk>
+
+       * Makefile.in (lex.o): No dependence on dwarfout.h.
+       * lex.c: Don't include dwarfout.h.
+
 2001-07-10  Jan van Male  <jan.vanmale@fenk.wau.nl>
 
        * ch-tree.h: Remove prototype for combine_parm_decls, unused
index cfaf634141b2cfde3deab434fcd9f542e8b7312e..05925f60cc2236cc8a42c4c7429a6d010940446c 100644 (file)
@@ -290,7 +290,7 @@ lang.o : lang.c $(CONFIG_H) $(CHILL_TREE_H) $(srcdir)/../input.h lex.h \
        $(srcdir)/../diagnostic.h
 lex.o : lex.c $(CONFIG_H) $(CHILL_TREE_H) $(RTL_H) $(srcdir)/../flags.h \
        $(srcdir)/../input.h $(srcdir)/parse.h $(srcdir)/../system.h    \
-       $(srcdir)/../toplev.h lex.h $(srcdir)/../dwarfout.h hash.h
+       $(srcdir)/../toplev.h lex.h hash.h
 loop.o : loop.c $(CONFIG_H) $(RTL_H) $(CHILL_TREE_H) lex.h \
        $(srcdir)/../flags.h $(srcdir)/../input.h \
        $(srcdir)/../tree.h $(srcdir)/../system.h $(srcdir)/../toplev.h
index 1a87025baaead1d75a09753f469adfde94d79474..4eae0a5df3dbad48b7d4bea6ae5b9be246c10579 100644 (file)
@@ -35,10 +35,6 @@ Boston, MA 02111-1307, USA.  */
 #include "toplev.h"
 #include "tm_p.h"
 
-#ifdef DWARF_DEBUGGING_INFO
-#include "dwarfout.h"
-#endif
-
 #ifdef MULTIBYTE_CHARS
 #include <locale.h>
 #endif
index 8d98554e05749e1f3e48793ff45516ca8fa5a44b..0fa3fdb4bc8943315ac51ebaf07d15fdea7f182a 100644 (file)
@@ -1,3 +1,11 @@
+2001-07-19  Neil Booth  <neil@daikokuya.demon.co.uk>
+
+       * decl2.c: Don't include dwarfout.h and dwarf2out.h.
+       * optimize.c: Include debug.h.
+       (maybe_clone_body): Use debug hook.
+       * semantics.c: Include debug.h.
+       (expand_body): Use debug hook.
+
 2001-07-19  Neil Booth  <neil@daikokuya.demon.co.uk>
 
        * spew.c (read_token, yyerror): Remove CPP_INT, CPP_FLOAT cases.
index 07a2e5bede5534584dc22b88e3557dae12453f5f..c3070b9c0fa6778906aa95e876fe6bede2bdb848 100644 (file)
@@ -244,7 +244,7 @@ cp/decl.o: cp/decl.c $(CXX_TREE_H) flags.h cp/lex.h cp/decl.h stack.h \
   output.h $(EXPR_H) except.h toplev.h hash.h $(GGC_H) $(RTL_H) \
   cp/operators.def $(TM_P_H)
 cp/decl2.o: cp/decl2.c $(CXX_TREE_H) flags.h cp/lex.h cp/decl.h $(EXPR_H) \
-  output.h except.h toplev.h dwarf2out.h dwarfout.h $(GGC_H) $(RTL_H)
+  output.h except.h toplev.h $(GGC_H) $(RTL_H)
 cp/typeck2.o: cp/typeck2.c $(CXX_TREE_H) flags.h toplev.h output.h $(TM_P_H) \
    diagnostic.h
 cp/typeck.o: cp/typeck.c $(CXX_TREE_H) flags.h $(RTL_H) $(EXPR_H) toplev.h \
@@ -274,10 +274,10 @@ cp/error.o: cp/error.c $(CXX_TREE_H) toplev.h diagnostic.h
 cp/errfn.o: cp/errfn.c $(CXX_TREE_H) toplev.h
 cp/repo.o: cp/repo.c $(CXX_TREE_H) toplev.h $(GGC_H) diagnostic.h
 cp/semantics.o: cp/semantics.c $(CXX_TREE_H) cp/lex.h except.h toplev.h \
-  flags.h $(GGC_H) output.h $(RTL_H) $(TIMEVAR_H) $(EXPR_H)
+  flags.h $(GGC_H) debug.h output.h $(RTL_H) $(TIMEVAR_H) $(EXPR_H)
 cp/dump.o: cp/dump.c $(CXX_TREE_H) c-dump.h
 cp/optimize.o: cp/optimize.c $(CXX_TREE_H) rtl.h integrate.h insn-config.h \
-  input.h params.h
+  input.h params.h debug.h
 cp/mangle.o: cp/mangle.c $(CXX_TREE_H) toplev.h
 
 cp/parse.o: cp/parse.c $(CXX_TREE_H) flags.h cp/lex.h except.h output.h \
index 5a1a1edc66736faf34b037c6d8b52e793178cfe7..5723f00479ddc38df2f7a2d41453fe05d1697b52 100644 (file)
@@ -40,8 +40,6 @@ Boston, MA 02111-1307, USA.  */
 #include "output.h"
 #include "except.h"
 #include "toplev.h"
-#include "dwarf2out.h"
-#include "dwarfout.h"
 #include "ggc.h"
 #include "timevar.h"
 #include "cpplib.h"
index 4e713c3b06f0315ae11ed1c8df698e2b9254d566..22e1eec527970f191d550730a0264c1270a36683 100644 (file)
@@ -32,6 +32,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include "ggc.h"
 #include "params.h"
 #include "hashtab.h"
+#include "debug.h"
 
 /* To Do:
 
@@ -1104,7 +1105,7 @@ maybe_clone_body (fn)
     return 0;
 
   /* Emit the DWARF1 abstract instance.  */
-  note_deferral_of_defined_inline_function (fn);
+  (*debug_hooks->deferred_inline_function) (fn);
 
   /* We know that any clones immediately follow FN in the TYPE_METHODS
      list.  */
index 2bb4051affc64317ce3f5b21ed9fbb6e48578ea2..94a31fb92b99419285d98fd57842c167e626d709 100644 (file)
@@ -37,6 +37,7 @@
 #include "expr.h"
 #include "output.h"
 #include "timevar.h"
+#include "debug.h"
 
 /* There routines provide a modular interface to perform many parsing
    operations.  They may therefore be used during actual parsing, or
@@ -2440,7 +2441,7 @@ expand_body (fn)
         we actually need to write this function out.  */
       defer_fn (fn);
       /* Let the back-end know that this funtion exists.  */
-      note_deferral_of_defined_inline_function (fn);
+      (*debug_hooks->deferred_inline_function) (fn);
       return;
     }
 
index e2f21ff88c95f834bfa8310d07d6d14021db00c4..ea05106fb02caec213a26ef0fb7ac92d9792e6bc 100644 (file)
@@ -317,6 +317,7 @@ static void dbxout_begin_function   PARAMS ((tree));
 
 static void dbxout_begin_block         PARAMS ((unsigned, unsigned));
 static void dbxout_end_block           PARAMS ((unsigned, unsigned));
+static void dbxout_function_decl       PARAMS ((tree));
 
 struct gcc_debug_hooks dbx_debug_hooks =
 {
@@ -337,7 +338,10 @@ struct gcc_debug_hooks dbx_debug_hooks =
 #else
   debug_nothing_tree,          /* begin_function */
 #endif
-  debug_nothing_int            /* end_function */
+  debug_nothing_int,           /* end_function */
+  dbxout_function_decl,
+  debug_nothing_tree,          /* global_decl */
+  debug_nothing_tree           /* deferred_inline_function */
 };
 #endif /* DBX_DEBUGGING_INFO  */
 
@@ -357,7 +361,10 @@ struct gcc_debug_hooks xcoff_debug_hooks =
   debug_nothing_int,           /* end_prologue */
   xcoffout_end_epilogue,
   debug_nothing_tree,          /* begin_function */
-  xcoffout_end_function
+  xcoffout_end_function,
+  debug_nothing_tree,          /* function_decl */
+  debug_nothing_tree,          /* global_decl */
+  debug_nothing_tree           /* deferred_inline_function */
 };
 #endif /* XCOFF_DEBUGGING_INFO  */
 \f
@@ -608,6 +615,33 @@ dbxout_end_block (line, n)
   ASM_OUTPUT_INTERNAL_LABEL (asmfile, "LBE", n);
 }
 
+/* Output dbx data for a function definition.
+   This includes a definition of the function name itself (a symbol),
+   definitions of the parameters (locating them in the parameter list)
+   and then output the block that makes up the function's body
+   (including all the auto variables of the function).  */
+
+static void
+dbxout_function_decl (decl)
+     tree decl;
+{
+#ifndef DBX_FUNCTION_FIRST
+  dbxout_begin_function (decl);
+#endif
+  dbxout_block (DECL_INITIAL (decl), 0, DECL_ARGUMENTS (decl));
+#ifdef DBX_OUTPUT_FUNCTION_END
+  DBX_OUTPUT_FUNCTION_END (asmfile, decl);
+#endif
+#if defined(ASM_OUTPUT_SECTION_NAME)
+  if (use_gnu_debug_info_extensions
+#if defined(NO_DBX_FUNCTION_END)
+      && ! NO_DBX_FUNCTION_END
+#endif
+      )
+    dbxout_function_end ();
+#endif
+}
+
 #endif /* DBX_DEBUGGING_INFO  */
 
 /* At the end of compilation, finish writing the symbol table.
@@ -2733,30 +2767,4 @@ dbxout_begin_function (decl)
     dbxout_symbol (DECL_RESULT (decl), 1);
 }
 
-/* Output dbx data for a function definition.
-   This includes a definition of the function name itself (a symbol),
-   definitions of the parameters (locating them in the parameter list)
-   and then output the block that makes up the function's body
-   (including all the auto variables of the function).  */
-
-void
-dbxout_function (decl)
-     tree decl;
-{
-#ifndef DBX_FUNCTION_FIRST
-  dbxout_begin_function (decl);
-#endif
-  dbxout_block (DECL_INITIAL (decl), 0, DECL_ARGUMENTS (decl));
-#ifdef DBX_OUTPUT_FUNCTION_END
-  DBX_OUTPUT_FUNCTION_END (asmfile, decl);
-#endif
-#if defined(ASM_OUTPUT_SECTION_NAME)
-  if (use_gnu_debug_info_extensions
-#if defined(NO_DBX_FUNCTION_END)
-      && ! NO_DBX_FUNCTION_END
-#endif
-      )
-    dbxout_function_end ();
-#endif
-}
 #endif /* DBX_DEBUGGING_INFO || XCOFF_DEBUGGING_INFO */
index 91bbced930b147d820e279ceae177f67f15e6a84..988962dc54e41fc252ff77e8011528ba9399cdf5 100644 (file)
@@ -25,4 +25,3 @@ extern int dbxout_symbol              PARAMS ((tree, int));
 extern void dbxout_parms               PARAMS ((tree));
 extern void dbxout_reg_parms           PARAMS ((tree));
 extern int dbxout_syms                 PARAMS ((tree));
-extern void dbxout_function            PARAMS ((tree));
index 0c75909d4ffd3548db2f1d6c27edb270c620b86f..4e525d5c4497e0a7c0d27e440e6090c25b4082d0 100644 (file)
@@ -35,7 +35,10 @@ struct gcc_debug_hooks do_nothing_debug_hooks =
   debug_nothing_int,           /* end_prologue */
   debug_nothing_void,          /* end_epilogue */
   debug_nothing_tree,          /* begin_function */
-  debug_nothing_int            /* end_function */
+  debug_nothing_int,           /* end_function */
+  debug_nothing_tree,          /* function_decl */
+  debug_nothing_tree,          /* global_decl */
+  debug_nothing_tree           /* deferred_inline_function */
 };
 
 /* This file contains implementations of each debug hook that do
index 56b2e033f22bd8f73cdd8ec23c0b2022b96c8f44..4a74bee83be982f667d2979eb6c36bef6962e93d 100644 (file)
@@ -73,6 +73,20 @@ struct gcc_debug_hooks
 
   /* Record end of function.  LINE is highest line number in function.  */
   void (* end_function) PARAMS ((unsigned int line));
+
+  /* Debug information for a function DECL.  This might include the
+     function name (a symbol), its parameters, and the block that
+     makes up the function's body, and the local variables of the
+     function.  */
+  void (* function_decl) PARAMS ((union tree_node *decl));
+
+  /* Debug information for a global DECL.  Called from toplev.c after
+     compilation proper has finished.  */
+  void (* global_decl) PARAMS ((union tree_node *decl));
+
+  /* DECL is an inline function, whose body is present, but which is
+     not being output at this point.  */
+  void (* deferred_inline_function) PARAMS ((union tree_node *decl));
 };
 
 extern struct gcc_debug_hooks *debug_hooks;
index 1dbdae034dd8281dd3ee685a84afa693e1bacf70..99fa2208f69a83345036b8b3d8aa41046427f98b 100644 (file)
@@ -3022,6 +3022,7 @@ static void dwarf2out_start_source_file   PARAMS ((unsigned, const char *));
 static void dwarf2out_end_source_file  PARAMS ((unsigned));
 static void dwarf2out_begin_block      PARAMS ((unsigned, unsigned));
 static void dwarf2out_end_block                PARAMS ((unsigned, unsigned));
+static void dwarf2out_global_decl      PARAMS ((tree));
 
 /* The debug hooks structure.  */
 
@@ -3040,7 +3041,10 @@ struct gcc_debug_hooks dwarf2_debug_hooks =
   debug_nothing_int,           /* end_prologue */
   dwarf2out_end_epilogue,
   debug_nothing_tree,          /* begin_function */
-  debug_nothing_int            /* end_function */
+  debug_nothing_int,           /* end_function */
+  dwarf2out_decl,              /* function_decl */
+  dwarf2out_global_decl,
+  debug_nothing_tree           /* deferred_inline_function */
 };
 \f
 /* NOTE: In the comments in this file, many references are made to
@@ -11011,6 +11015,21 @@ dwarf2out_add_library_unit_info (filename, context_list)
     }
 }
 
+/* Debug information for a global DECL.  Called from toplev.c after
+   compilation proper has finished.  */
+static void
+dwarf2out_global_decl (decl)
+     tree decl;
+{
+  /* Output DWARF2 information for file-scope tentative data object
+     declarations, file-scope (extern) function declarations (which
+     had no corresponding body) and file-scope tagged type
+     declarations and definitions which have not yet been forced out.  */
+
+  if (TREE_CODE (decl) != FUNCTION_DECL || !DECL_INITIAL (decl))
+    dwarf2out_decl (decl);
+}
+
 /* Write the debugging output for DECL.  */
 
 void
index 65e324aeef8c1a7bbf6fd85657d38d9a39e1e4f3..1d3644d3b1c988cacf56d925819684bfe0d80088 100644 (file)
@@ -574,7 +574,6 @@ Boston, MA 02111-1307, USA.  */
 #include "insn-config.h"
 #include "reload.h"
 #include "output.h"
-#include "dwarfout.h"
 #include "toplev.h"
 #include "tm_p.h"
 #include "debug.h"
@@ -801,6 +800,10 @@ static void dwarfout_end_epilogue  PARAMS ((void));
 static void dwarfout_source_line       PARAMS ((unsigned int, const char *));
 static void dwarfout_end_prologue      PARAMS ((unsigned int));
 static void dwarfout_end_function      PARAMS ((unsigned int));
+static void dwarfout_function_decl     PARAMS ((tree));
+static void dwarfout_global_decl       PARAMS ((tree));
+static void dwarfout_deferred_inline_function  PARAMS ((tree));
+static void dwarfout_file_scope_decl   PARAMS ((tree , int));
 static const char *dwarf_tag_name      PARAMS ((unsigned));
 static const char *dwarf_attr_name     PARAMS ((unsigned));
 static const char *dwarf_stack_op_name PARAMS ((unsigned));
@@ -1389,7 +1392,10 @@ struct gcc_debug_hooks dwarf_debug_hooks =
   dwarfout_end_prologue,
   dwarfout_end_epilogue,
   debug_nothing_tree,          /* begin_function */
-  dwarfout_end_function
+  dwarfout_end_function,
+  dwarfout_function_decl,
+  dwarfout_global_decl,
+  dwarfout_deferred_inline_function
 };
 \f
 /************************ general utility functions **************************/
@@ -5324,7 +5330,7 @@ output_decl (decl, containing_scope)
 
       /* If we're emitting an out-of-line copy of an inline function,
         set up to refer to the abstract instance emitted from
-        note_deferral_of_defined_inline_function.  */
+        dwarfout_deferred_inline_function.  */
       if (DECL_INLINE (decl) && ! DECL_ABSTRACT (decl)
          && ! (containing_scope && TYPE_P (containing_scope)))
        set_decl_origin_self (decl);
@@ -5631,7 +5637,62 @@ output_decl (decl, containing_scope)
     }
 }
 \f
-void
+/* Output debug information for a function.  */
+static void
+dwarfout_function_decl (decl)
+     tree decl;
+{
+  dwarfout_file_scope_decl (decl, 0);
+}
+
+/* Debug information for a global DECL.  Called from toplev.c after
+   compilation proper has finished.  */
+static void
+dwarfout_global_decl (decl)
+     tree decl;
+{
+  /* Output DWARF information for file-scope tentative data object
+     declarations, file-scope (extern) function declarations (which
+     had no corresponding body) and file-scope tagged type
+     declarations and definitions which have not yet been forced out.  */
+
+  if (TREE_CODE (decl) != FUNCTION_DECL || !DECL_INITIAL (decl))
+    dwarfout_file_scope_decl (decl, 1);
+}
+
+/* DECL is an inline function, whose body is present, but which is not
+   being output at this point.  (We're putting that off until we need
+   to do it.)  */
+static void
+dwarfout_deferred_inline_function (decl)
+     tree decl;
+{
+  /* Generate the DWARF info for the "abstract" instance of a function
+     which we may later generate inlined and/or out-of-line instances
+     of.  */
+  if ((DECL_INLINE (decl) || DECL_ABSTRACT (decl))
+      && ! DECL_ABSTRACT_ORIGIN (decl))
+    {
+      /* The front-end may not have set CURRENT_FUNCTION_DECL, but the
+        DWARF code expects it to be set in this case.  Intuitively,
+        DECL is the function we just finished defining, so setting
+        CURRENT_FUNCTION_DECL is sensible.  */
+      tree saved_cfd = current_function_decl;
+      int was_abstract = DECL_ABSTRACT (decl);
+      current_function_decl = decl;
+
+      /* Let the DWARF code do its work.  */
+      set_decl_abstract_flags (decl, 1);
+      dwarfout_file_scope_decl (decl, 0);
+      if (! was_abstract)
+       set_decl_abstract_flags (decl, 0);
+
+      /* Reset CURRENT_FUNCTION_DECL.  */
+      current_function_decl = saved_cfd;
+    }
+}
+
+static void
 dwarfout_file_scope_decl (decl, set_finalizing)
      register tree decl;
      register int set_finalizing;
diff --git a/gcc/dwarfout.h b/gcc/dwarfout.h
deleted file mode 100644 (file)
index 973c07e..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/* dwarfout.h - Various declarations for functions found in dwarfout.c
-   Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU CC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU CC; see the file COPYING.  If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
-
-extern void dwarfout_file_scope_decl   PARAMS ((tree , int));
index 6a8c298b3811f2b0fabdcf504c54b657b2c5b920..b4d25f268c19f0b650df161d5deb3c994747776e 100644 (file)
@@ -76,10 +76,6 @@ Boston, MA 02111-1307, USA.  */
 #include "xcoffout.h"
 #endif
 
-#ifdef DWARF_DEBUGGING_INFO
-#include "dwarfout.h"
-#endif
-
 #if defined (DWARF2_UNWIND_INFO) || defined (DWARF2_DEBUGGING_INFO)
 #include "dwarf2out.h"
 #endif
index 03f1ae36c76e5e8b3fad7016d75cd2dd0ed78194..b19395e8e0db1faae1630d383b5f457f1b57cbd9 100644 (file)
@@ -731,7 +731,6 @@ dwarf2asm.h
 dwarf2out.c
 dwarf2out.h
 dwarfout.c
-dwarfout.h
 emit-rtl.c
 #enquire.c is used only by GCC maintainers and installers
 errors.c
index d6bccabdce19510dbdfb7488a06f5a5dfc10019e..4dc4a65c08d911e04d39f1fd18bbc1b4c4335d22 100644 (file)
@@ -99,6 +99,7 @@ static void sdbout_begin_block                PARAMS ((unsigned, unsigned));
 static void sdbout_end_block           PARAMS ((unsigned, unsigned));
 static void sdbout_source_line         PARAMS ((unsigned int, const char *));
 static void sdbout_end_epilogue                PARAMS ((void));
+static void sdbout_global_decl         PARAMS ((tree));
 #ifndef MIPS_DEBUGGING_INFO
 static void sdbout_begin_prologue      PARAMS ((unsigned int, const char *));
 #endif
@@ -315,7 +316,10 @@ struct gcc_debug_hooks sdb_debug_hooks =
 #endif
   sdbout_end_epilogue,
   sdbout_begin_function,
-  sdbout_end_function
+  sdbout_end_function,
+  debug_nothing_tree,          /* function_decl */
+  sdbout_global_decl,
+  debug_nothing_tree           /* deferred_inline_function */
 };
 \f
 #if 0
@@ -1472,6 +1476,32 @@ sdbout_reg_parms (parms)
       }
 }
 \f
+/* Output debug information for a global DECL.  Called from toplev.c
+   after compilation proper has finished.  */
+
+static void
+sdbout_global_decl (decl)
+     tree decl;
+{
+  if (TREE_CODE (decl) == VAR_DECL
+      && DECL_INITIAL (decl)
+      && ! DECL_EXTERNAL (decl)
+      && DECL_RTL (decl) != 0)
+    {
+      /* The COFF linker can move initialized global vars to the end.
+        And that can screw up the symbol ordering.  By putting the
+        symbols in that order to begin with, we avoid a problem.
+        mcsun!unido!fauern!tumuc!pes@uunet.uu.net.  */
+      if (TREE_PUBLIC (decl))
+       sdbout_symbol (decl, 0);
+
+      /* Output COFF information for non-global file-scope initialized
+        variables.  */
+      if (GET_CODE (DECL_RTL (decl)) == MEM)
+       sdbout_toplevel_data (decl);
+    }
+}
+\f
 /* Describe the beginning of an internal block within a function.
    Also output descriptions of variables defined in this block.
 
index e357d62b6d386be3eaa0301478872cedfcf118f1..0e510b94f50371bc5e6cd918b74a6f236b331ac0 100644 (file)
@@ -68,10 +68,6 @@ Boston, MA 02111-1307, USA.  */
 #include "integrate.h"
 #include "debug.h"
 
-#ifdef DWARF_DEBUGGING_INFO
-#include "dwarfout.h"
-#endif
-
 #if defined (DWARF2_UNWIND_INFO) || defined (DWARF2_DEBUGGING_INFO)
 #include "dwarf2out.h"
 #endif
@@ -2059,47 +2055,7 @@ check_global_declarations (vec, len)
        warning_with_decl (decl, "`%s' defined but not used");
 
       timevar_push (TV_SYMOUT);
-#ifdef SDB_DEBUGGING_INFO
-      /* The COFF linker can move initialized global vars to the end.
-        And that can screw up the symbol ordering.
-        By putting the symbols in that order to begin with,
-        we avoid a problem.  mcsun!unido!fauern!tumuc!pes@uunet.uu.net.  */
-      if (write_symbols == SDB_DEBUG && TREE_CODE (decl) == VAR_DECL
-         && TREE_PUBLIC (decl) && DECL_INITIAL (decl)
-         && ! DECL_EXTERNAL (decl)
-         && DECL_RTL (decl) != 0)
-       sdbout_symbol (decl, 0);
-
-      /* Output COFF information for non-global
-        file-scope initialized variables.  */
-      if (write_symbols == SDB_DEBUG
-         && TREE_CODE (decl) == VAR_DECL
-         && DECL_INITIAL (decl)
-         && ! DECL_EXTERNAL (decl)
-         && DECL_RTL (decl) != 0
-         && GET_CODE (DECL_RTL (decl)) == MEM)
-       sdbout_toplevel_data (decl);
-#endif /* SDB_DEBUGGING_INFO  */
-#ifdef DWARF_DEBUGGING_INFO
-      /* Output DWARF information for file-scope tentative data object
-        declarations, file-scope (extern) function declarations (which
-        had no corresponding body) and file-scope tagged type declarations
-        and definitions which have not yet been forced out.  */
-
-      if (write_symbols == DWARF_DEBUG
-         && (TREE_CODE (decl) != FUNCTION_DECL || !DECL_INITIAL (decl)))
-       dwarfout_file_scope_decl (decl, 1);
-#endif
-#ifdef DWARF2_DEBUGGING_INFO
-      /* Output DWARF2 information for file-scope tentative data object
-        declarations, file-scope (extern) function declarations (which
-        had no corresponding body) and file-scope tagged type declarations
-        and definitions which have not yet been forced out.  */
-
-      if (write_symbols == DWARF2_DEBUG
-         && (TREE_CODE (decl) != FUNCTION_DECL || !DECL_INITIAL (decl)))
-       dwarf2out_decl (decl);
-#endif
+      (*debug_hooks->global_decl) (decl);
       timevar_pop (TV_SYMOUT);
     }
 }
@@ -2634,46 +2590,6 @@ rest_of_type_compilation (type, toplev)
   timevar_pop (TV_SYMOUT);
 }
 
-/* DECL is an inline function, whose body is present, but which is not
-   being output at this point.  (We're putting that off until we need
-   to do it.)  If there are any actions that need to take place,
-   including the emission of debugging information for the function,
-   this is where they should go.  This function may be called by
-   language-dependent code for front-ends that do not even generate
-   RTL for functions that don't need to be put out.  */
-
-void
-note_deferral_of_defined_inline_function (decl)
-     tree decl ATTRIBUTE_UNUSED;
-{
-#ifdef DWARF_DEBUGGING_INFO
-  /* Generate the DWARF info for the "abstract" instance of a function
-     which we may later generate inlined and/or out-of-line instances
-     of.  */
-  if (write_symbols == DWARF_DEBUG
-      && (DECL_INLINE (decl) || DECL_ABSTRACT (decl))
-      && ! DECL_ABSTRACT_ORIGIN (decl))
-    {
-      /* The front-end may not have set CURRENT_FUNCTION_DECL, but the
-        DWARF code expects it to be set in this case.  Intuitively,
-        DECL is the function we just finished defining, so setting
-        CURRENT_FUNCTION_DECL is sensible.  */
-      tree saved_cfd = current_function_decl;
-      int was_abstract = DECL_ABSTRACT (decl);
-      current_function_decl = decl;
-
-      /* Let the DWARF code do its work.  */
-      set_decl_abstract_flags (decl, 1);
-      dwarfout_file_scope_decl (decl, 0);
-      if (! was_abstract)
-       set_decl_abstract_flags (decl, 0);
-
-      /* Reset CURRENT_FUNCTION_DECL.  */
-      current_function_decl = saved_cfd;
-    }
-#endif
-}
-
 /* FNDECL is an inline function which is about to be emitted out of line.
    Do any preparation, such as emitting abstract debug info for the inline
    before it gets mangled by optimization.  */
@@ -2822,7 +2738,7 @@ rest_of_compilation (decl)
           declared inline but not inlined, and those inlined even
           though they weren't declared inline.  Conveniently, that's
           what DECL_INLINE means at this point.  */
-       note_deferral_of_defined_inline_function (decl);
+       (*debug_hooks->deferred_inline_function) (decl);
 
       if (DECL_DEFER_OUTPUT (decl))
        {
@@ -3802,20 +3718,7 @@ rest_of_compilation (decl)
      generated.  During that call, we *will* be routed past here.  */
 
   timevar_push (TV_SYMOUT);
-#ifdef DBX_DEBUGGING_INFO
-  if (write_symbols == DBX_DEBUG)
-    dbxout_function (decl);
-#endif
-
-#ifdef DWARF_DEBUGGING_INFO
-  if (write_symbols == DWARF_DEBUG)
-    dwarfout_file_scope_decl (decl, 0);
-#endif
-
-#ifdef DWARF2_DEBUGGING_INFO
-  if (write_symbols == DWARF2_DEBUG)
-    dwarf2out_decl (decl);
-#endif
+  (*debug_hooks->function_decl) (decl);
   timevar_pop (TV_SYMOUT);
 
  exit_rest_of_compilation:
index 0797b2d95ad1f4ccfcf40976adf54365fb879514..99af4b1eac6113f6deb7e860e4ba851ca5b28613 100644 (file)
@@ -123,8 +123,6 @@ extern void fnotice                 PARAMS ((FILE *, const char *, ...))
 
 extern int wrapup_global_declarations   PARAMS ((union tree_node **, int));
 extern void check_global_declarations   PARAMS ((union tree_node **, int));
-extern void note_deferral_of_defined_inline_function
-                                       PARAMS ((union tree_node *));
 extern void note_outlining_of_inline_function
                                        PARAMS ((union tree_node *));