Clean up langhooks
authorNeil Booth <neil@cat.daikokuya.demon.co.uk>
Tue, 6 Nov 2001 21:12:14 +0000 (21:12 +0000)
committerNeil Booth <neil@gcc.gnu.org>
Tue, 6 Nov 2001 21:12:14 +0000 (21:12 +0000)
* alias.c:: Include langhooks.h.
* emit-rtl.c: Similarly.
* toplev.c: Similarly.
* tree-inline.c: Similarly.
* langhooks-def.h: New, the old langhooks.h.  Give the default
hooks a common prefix.
* langhooks.h: Contents extracted from toplev.h.
* toplev.h: Move langhook stuff to langhooks.h.
* langhooks.c: Give default hooks a common prefix.

* c-lang.c: Include langhooks-def.h.
* ada/misc.c: Similarly.
* cp/cp-lang.c: Similarly.
* f/com.c: Similarly.
* java/lang.c: Similarly.
* objc/objc-act.c: Similarly.

* Makefile.in: Update.
* ada/Makefile.in: Similarly.
* cp/Make-lang.in: Similarly.
* f/Make-lang.in: Similarly.
* java/Make-lang.in: Similarly.
* objc/Make-lang.in: Similarly.

From-SVN: r46813

25 files changed:
gcc/ChangeLog
gcc/Makefile.in
gcc/ada/ChangeLog
gcc/ada/Makefile.in
gcc/ada/misc.c
gcc/alias.c
gcc/c-lang.c
gcc/cp/ChangeLog
gcc/cp/Make-lang.in
gcc/cp/cp-lang.c
gcc/emit-rtl.c
gcc/f/ChangeLog
gcc/f/Make-lang.in
gcc/f/com.c
gcc/java/ChangeLog
gcc/java/Make-lang.in
gcc/java/lang.c
gcc/langhooks-def.h [new file with mode: 0644]
gcc/langhooks.c
gcc/langhooks.h
gcc/objc/Make-lang.in
gcc/objc/objc-act.c
gcc/toplev.c
gcc/toplev.h
gcc/tree-inline.c

index 29e3fa14aeb0ca36077dc051063d4f4f70805e7c..3c88f247d6aac25ab3e75bbe6760a54191701b64 100644 (file)
@@ -1,3 +1,20 @@
+2001-11-06  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
+
+       * alias.c:: Include langhooks.h.
+       * emit-rtl.c: Similarly.
+       * toplev.c: Similarly.
+       * tree-inline.c: Similarly.
+       * langhooks-def.h: New, the old langhooks.h.  Give the default
+       hooks a common prefix.
+       * langhooks.h: Contents extracted from toplev.h.
+       * toplev.h: Move langhook stuff to langhooks.h.
+       * langhooks.c: Give default hooks a common prefix.
+
+       * c-lang.c: Include langhooks-def.h.
+       * objc/objc-act.c: Similarly.
+       * Makefile.in: Update.
+       * objc/Make-lang.in: Update.
+
 2001-11-06  Joseph S. Myers  <jsm28@cam.ac.uk>
 
        * doc/install.texi: Document that configure options not listed in
index 4ed39201da42ab53a901d60633f4e9204f4fa35c..73596948bb91297c9eb81ffdf2789d9bde8f5e80 100644 (file)
@@ -1168,7 +1168,8 @@ c-typeck.o : c-typeck.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \
     $(TARGET_H) flags.h intl.h output.h $(EXPR_H) $(RTL_H) toplev.h $(TM_P_H)
 c-lang.o : c-lang.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \
     $(GGC_H)  c-lex.h toplev.h diagnostic.h output.h function.h \
-    $(RTL_H) $(EXPR_H) tree-inline.h insn-config.h integrate.h langhooks.h
+    $(RTL_H) $(EXPR_H) tree-inline.h insn-config.h integrate.h langhooks.h \
+    langhooks-def.h
 c-lex.o : c-lex.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) c-lex.h \
     debug.h $(C_TREE_H) \
     c-pragma.h input.h intl.h flags.h toplev.h output.h \
@@ -1344,12 +1345,12 @@ prefix.o: prefix.c $(CONFIG_H) $(SYSTEM_H) Makefile prefix.h
 convert.o: convert.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h convert.h toplev.h
 
 langhooks.o : langhooks.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) toplev.h \
-   tree-inline.h $(RTL_H) insn-config.h integrate.h langhooks.h
+   tree-inline.h $(RTL_H) insn-config.h integrate.h langhooks.h langhooks-def.h
 tree.o : tree.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h function.h toplev.h \
    $(GGC_H) $(HASHTAB_H) $(TARGET_H) output.h $(TM_P_H)
 tree-inline.o : tree-inline.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) \
    expr.h flags.h params.h input.h insn-config.h $(INTEGRATE_H) \
-   $(VARRAY_H) $(HASHTAB_H) $(SPLAY_TREE_H) toplev.h \
+   $(VARRAY_H) $(HASHTAB_H) $(SPLAY_TREE_H) toplev.h langhooks.h \
    $(C_COMMON_H) tree-inline.h
 print-tree.o : print-tree.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(GGC_H)
 stor-layout.o : stor-layout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) flags.h \
@@ -1364,7 +1365,8 @@ toplev.o : toplev.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) function.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 $(TARGET_H) halfpic.h
+   ssa.h $(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) halfpic.h \
+   langhooks.h
        $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
          -DTARGET_NAME=\"$(target_alias)\" \
          -c $(srcdir)/toplev.c
@@ -1439,7 +1441,7 @@ xcoffout.o : xcoffout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) xcoffout.h \
 emit-rtl.o : emit-rtl.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
    function.h $(REGS_H) insn-config.h $(RECOG_H) real.h $(GGC_H) \
    $(EXPR_H) $(srcdir)/../include/obstack.h hard-reg-set.h bitmap.h toplev.h \
-   $(HASHTAB_H) $(TM_P_H) debug.h
+   $(HASHTAB_H) $(TM_P_H) debug.h langhooks.h
 real.o : real.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) toplev.h $(TM_P_H)
 integrate.o : integrate.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
    debug.h $(INTEGRATE_H) insn-config.h $(EXPR_H) real.h $(REGS_H) \
@@ -1545,7 +1547,7 @@ reorg.o : reorg.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) conditions.h hard-reg-set.h \
    $(RECOG_H) function.h flags.h output.h $(EXPR_H) toplev.h $(PARAMS_H) $(TM_P_H)
 alias.o : alias.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) flags.h hard-reg-set.h \
    $(BASIC_BLOCK_H) $(REGS_H) toplev.h output.h $(EXPR_H) \
-   $(GGC_H) function.h cselib.h $(TREE_H) $(TM_P_H)
+   $(GGC_H) function.h cselib.h $(TREE_H) $(TM_P_H) langhooks.h
 regmove.o : regmove.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) insn-config.h \
    $(RECOG_H) output.h $(REGS_H) hard-reg-set.h flags.h function.h \
    $(EXPR_H) $(BASIC_BLOCK_H) toplev.h $(TM_P_H) except.h reload.h
index 61a26357670bf2f1921df23557a11e4ae637c5cf..b7c2e6e71f101e6acd94dd5ad167cae35d7d9a1c 100644 (file)
@@ -1,3 +1,8 @@
+2001-11-06  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
+
+       * misc.c: Include langhooks-def.h.
+       * Makefile.in: Update.
+
 2001-10-30  Robert Dewar <dewar@gnat.com>
 
        * style.adb:
index 86d1c47bfa34936d3339c5958dbac8026727204d..4bd750d94a58205eae5ba8116a5c813443d1ee30 100644 (file)
@@ -2587,7 +2587,7 @@ misc.o : misc.c $(CONFIG_H) $(TREE_H) $(RTL_H) $(srcdir)/../expr.h \
    $(srcdir)/../flags.h $(srcdir)/../diagnostic.h $(srcdir)/../output.h \
    $(srcdir)/../except.h ../tm_p.h ../langhooks.h ada.h types.h atree.h \
    nlists.h elists.h sinfo.h einfo.h namet.h stringt.h uintp.h fe.h \
-   $(ADA_TREE_H) gigi.h
+   $(ADA_TREE_H) gigi.h ../langhooks-def.h
 
 targtyps.o : targtyps.c $(CONFIG_H) ada.h types.h atree.h nlists.h elists.h \
    uintp.h sinfo.h einfo.h namet.h snames.h stringt.h urealp.h fe.h \
index 5d1c398f5f506c80a6a077aef089c9766bd6600b..8ef1063c2fa14a9bd24a15ac484dd56aa031ea58 100644 (file)
@@ -6,7 +6,7 @@
  *                                                                          *
  *                           C Implementation File                          *
  *                                                                          *
- *                             $Revision$
+ *                             $Revision: 1.8 $
  *                                                                          *
  *          Copyright (C) 1992-2001 Free Software Foundation, Inc.          *
  *                                                                          *
@@ -53,6 +53,7 @@
 #include "except.h"
 #include "tm_p.h"
 #include "langhooks.h"
+#include "langhooks-def.h"
 
 #include "ada.h"
 #include "types.h"
index 68b80b8d6d3fa39610d7d9aa34ea998ffa7f2cba..84fbdc9ee0b8d26882ac8b113d3209ecc6458843 100644 (file)
@@ -35,6 +35,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include "cselib.h"
 #include "splay-tree.h"
 #include "ggc.h"
+#include "langhooks.h"
 
 /* The alias sets assigned to MEMs assist the back-end in determining
    which MEMs can alias which other MEMs.  In general, two MEMs in
index 59e8d5c040aea839980a5039d9f6d75d75341906..5f8f43ac0941183a797f537ae7ce40e3f3a1dde7 100644 (file)
@@ -39,6 +39,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include "insn-config.h"
 #include "integrate.h"
 #include "langhooks.h"
+#include "langhooks-def.h"
 
 static int c_tree_printer PARAMS ((output_buffer *));
 static int c_missing_noreturn_ok_p PARAMS ((tree));
index e566e3034447f683a4184843cac54426282780a5..a36f3e4a09b89e2a4565604f011f7f9a3373aa40 100644 (file)
@@ -1,3 +1,8 @@
+2001-11-06  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
+
+       * Make-lang.in: Update.
+       * cp-lang.c: Include langhooks-def.h.
+
 2001-11-04  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
 
        * pt.c (tsubst_copy): Call tsubst for TYPEOF_EXPR.
index 9b2d7ee4ac57ee8ad49189100e1a7635606b978c..c57cbe523ed9395f0f9d0860f810c20ecd8de74d 100644 (file)
@@ -241,7 +241,7 @@ cp/spew.o: cp/spew.c $(CXX_TREE_H) cp/parse.h flags.h cp/lex.h toplev.h
 cp/lex.o: cp/lex.c $(CXX_TREE_H) cp/parse.h flags.h cp/lex.h c-pragma.h \
   toplev.h output.h mbchar.h $(GGC_H) input.h diagnostic.h cp/operators.def \
   $(TM_P_H)
-cp/cp-lang.o: cp/cp-lang.c $(CXX_TREE_H) toplev.h langhooks.h
+cp/cp-lang.o: cp/cp-lang.c $(CXX_TREE_H) toplev.h langhooks.h langhooks-def.h
 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) tree-inline.h
index 4ff47af990a18bd63913322aacf1940255d5eb5f..fa3d766e63512de75163121de5fea89fdbc7d2d9 100644 (file)
@@ -25,6 +25,7 @@ Boston, MA 02111-1307, USA.  */
 #include "cp-tree.h"
 #include "toplev.h"
 #include "langhooks.h"
+#include "langhooks-def.h"
 
 static HOST_WIDE_INT cxx_get_alias_set PARAMS ((tree));
 
index 657e0b612cb6cdf0ed00b1adcf465e446480970f..9bbaee4432be0f35f110509a8520c34645feadbd 100644 (file)
@@ -55,6 +55,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include "basic-block.h"
 #include "ggc.h"
 #include "debug.h"
+#include "langhooks.h"
 
 /* Commonly used modes.  */
 
index 725ba35a25046b6a7a7c748bfc99d001a6ff2f89..cc346bd7b6b8ab81600707f6610641ec80c3a350 100644 (file)
@@ -1,3 +1,8 @@
+Tue Nov  6 21:17:47 2001  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
+
+       * com.c: Include langhooks-def.h.
+       * Make-lang.in: Update.
+
 2001-11-04  Toon Moene  <toon@moene.indiv.nluug.nl>
 
        * g77.texi: Split off invoke.texi (preliminary to using it
index 889495861a6f8c31f8d41c49f3284f2095afa878..464c75ed81dd374abe89ccd16b7e421b5f1c657e 100644 (file)
@@ -423,7 +423,7 @@ f/com.o: f/com.c f/proj.h $(CONFIG_H) $(SYSTEM_H) flags.h $(RTL_H) $(TREE_H) \
  f/bad.def f/where.h glimits.h f/top.h f/lex.h f/type.h f/intrin.h \
  f/intrin.def f/lab.h f/symbol.h f/symbol.def f/equiv.h f/storag.h f/global.h \
  f/name.h f/expr.h f/implic.h f/src.h f/st.h $(GGC_H) toplev.h diagnostic.h \
- langhooks.h
+ langhooks.h langhooks-def.h
 f/data.o: f/data.c f/proj.h $(CONFIG_H) $(SYSTEM_H) f/data.h f/bld.h f/bld-op.def \
  f/bit.h f/malloc.h f/com.h f/com-rt.def $(TREE_H) f/info.h f/info-b.def \
  f/info-k.def f/info-w.def f/target.h f/bad.h f/bad.def f/where.h glimits.h \
index 3ed77c7bef1ac84cb24174fd00c774091f82b51d..428458b8c614781cbca95b222405cdf81976a3ed 100644 (file)
@@ -90,6 +90,7 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include "ggc.h"
 #include "diagnostic.h"
 #include "langhooks.h"
+#include "langhooks-def.h"
 
 /* VMS-specific definitions */
 #ifdef VMS
index 3a73e7a014e9646e09d67987a9c79778806a5485..ae4fcb0af3a709f929fb09b951eb1a82e1c424b8 100644 (file)
@@ -1,3 +1,8 @@
+2001-11-06  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
+
+       * lang.c: Include langhooks-def.h.
+       * Make-lang.in: Update.
+
 2001-10-31  Zack Weinberg  <zack@codesourcery.com>
 
        * Make-lang.in: Replace $(INTL_TARGETS) with po-generated.
index e049f22ebc63a6221618de3a12a36bdc360e313b..7186aed918d20dd9cefac4e84bef54d83fc70e8d 100644 (file)
@@ -268,7 +268,8 @@ java/jcf-write.o: java/jcf-write.c $(CONFIG_H) $(JAVA_TREE_H) java/jcf.h \
 java/jv-scan.o: java/jv-scan.c $(CONFIG_H) $(SYSTEM_H) version.h
 java/jvgenmain.o: java/jvgenmain.c $(CONFIG_H) $(JAVA_TREE_H) $(SYSTEM_H)
 java/lang.o: java/lang.c $(CONFIG_H) $(JAVA_TREE_H) java/jcf.h input.h \
-  toplev.h $(SYSTEM_H) $(RTL_H) $(EXPR_H) diagnostic.h langhooks.h
+  toplev.h $(SYSTEM_H) $(RTL_H) $(EXPR_H) diagnostic.h langhooks.h \
+  langhooks-def.h
 java/mangle.o: java/mangle.c $(CONFIG_H) java/jcf.h $(JAVA_TREE_H) $(SYSTEM_H) \
   toplev.h $(GGC_H)
 java/mangle_name.o: java/mangle_name.c $(CONFIG_H) java/jcf.h $(JAVA_TREE_H) \
index ff1fce58252aea21996315e2129d225355552137..91114b19e1fd583f528e580b7c759a1b8ffea310 100644 (file)
@@ -35,6 +35,7 @@ The Free Software Foundation is independent of Sun Microsystems, Inc.  */
 #include "jcf.h"
 #include "toplev.h"
 #include "langhooks.h"
+#include "langhooks-def.h"
 #include "flags.h"
 #include "xref.h"
 #include "ggc.h"
diff --git a/gcc/langhooks-def.h b/gcc/langhooks-def.h
new file mode 100644 (file)
index 0000000..0e615cb
--- /dev/null
@@ -0,0 +1,109 @@
+/* Default macros to initialize the lang_hooks data structure.
+   Copyright 2001 Free Software Foundation, Inc.
+   Contributed by Alexandre Oliva  <aoliva@redhat.com>
+
+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.  */
+
+#ifndef GCC_LANG_HOOKS_DEF_H
+#define GCC_LANG_HOOKS_DEF_H
+
+/* Provide a hook routine for alias sets that always returns 1.  This is
+   used by languages that haven't deal with alias sets yet.  */
+extern HOST_WIDE_INT hook_get_alias_set_0      PARAMS ((tree));
+
+/* Note to creators of new hooks:
+
+   The macros in this file should NOT be surrounded by a
+   #ifdef...#endif pair, since this file declares the defaults.  Each
+   front end overrides any hooks it wishes to, in the file containing
+   its struct lang_hooks, AFTER including this file.
+
+   Prefix all default hooks with "lhd_".  */
+
+/* See langhooks.h for the definition and documentation of each hook.  */
+
+extern void lhd_do_nothing PARAMS ((void));
+extern int lhd_decode_option PARAMS ((int, char **));
+extern HOST_WIDE_INT lhd_get_alias_set PARAMS ((tree));
+extern void lhd_clear_binding_stack PARAMS ((void));
+
+/* Declarations of default tree inlining hooks.  */
+tree lhd_tree_inlining_walk_subtrees           PARAMS ((tree *, int *,
+                                                        walk_tree_fn,
+                                                        void *, void *));
+int lhd_tree_inlining_cannot_inline_tree_fn    PARAMS ((tree *));
+int lhd_tree_inlining_disregard_inline_limits  PARAMS ((tree));
+tree lhd_tree_inlining_add_pending_fn_decls    PARAMS ((void *, tree));
+int lhd_tree_inlining_tree_chain_matters_p     PARAMS ((tree));
+int lhd_tree_inlining_auto_var_in_fn_p         PARAMS ((tree, tree));
+tree lhd_tree_inlining_copy_res_decl_for_inlining PARAMS ((tree, tree,
+                                                          tree, void *,
+                                                          int *, void *));
+int lhd_tree_inlining_anon_aggr_type_p         PARAMS ((tree));
+
+#define LANG_HOOKS_INIT                        lhd_do_nothing
+#define LANG_HOOKS_FINISH              lhd_do_nothing
+#define LANG_HOOKS_CLEAR_BINDING_STACK lhd_clear_binding_stack
+#define LANG_HOOKS_INIT_OPTIONS                lhd_do_nothing
+#define LANG_HOOKS_DECODE_OPTION       lhd_decode_option
+#define LANG_HOOKS_POST_OPTIONS                lhd_do_nothing
+#define LANG_HOOKS_GET_ALIAS_SET       lhd_get_alias_set
+#define LANG_HOOKS_HONOR_READONLY      false
+
+/* Tree inlining hooks.  */
+#define LANG_HOOKS_TREE_INLINING_WALK_SUBTREES lhd_tree_inlining_walk_subtrees
+#define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \
+  lhd_tree_inlining_cannot_inline_tree_fn
+#define LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS \
+  lhd_tree_inlining_disregard_inline_limits
+#define LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS \
+  lhd_tree_inlining_add_pending_fn_decls
+#define LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P \
+  lhd_tree_inlining_tree_chain_matters_p
+#define LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P \
+  lhd_tree_inlining_auto_var_in_fn_p
+#define LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING \
+  lhd_tree_inlining_copy_res_decl_for_inlining
+#define LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \
+  lhd_tree_inlining_anon_aggr_type_p
+
+#define LANG_HOOKS_TREE_INLINING_INITIALIZER { \
+  LANG_HOOKS_TREE_INLINING_WALK_SUBTREES, \
+  LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN, \
+  LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS, \
+  LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS, \
+  LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P, \
+  LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P, \
+  LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING, \
+  LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \
+} \
+
+/* The whole thing.  The structure is defined in toplev.h.  */
+#define LANG_HOOKS_INITIALIZER { \
+  LANG_HOOKS_INIT, \
+  LANG_HOOKS_FINISH, \
+  LANG_HOOKS_CLEAR_BINDING_STACK, \
+  LANG_HOOKS_INIT_OPTIONS, \
+  LANG_HOOKS_DECODE_OPTION, \
+  LANG_HOOKS_POST_OPTIONS, \
+  LANG_HOOKS_GET_ALIAS_SET, \
+  LANG_HOOKS_HONOR_READONLY, \
+  LANG_HOOKS_TREE_INLINING_INITIALIZER \
+}
+
+#endif /* GCC_LANG_HOOKS_DEF_H */
index 40a041fceceb9f0279b44693c505aacb1c08f818..a253af372a2c226ddfcaa1c413d1f5801123a009 100644 (file)
@@ -28,18 +28,19 @@ Boston, MA 02111-1307, USA.  */
 #include "insn-config.h"
 #include "integrate.h"
 #include "langhooks.h"
+#include "langhooks-def.h"
 
 /* Do nothing; in many cases the default hook.  */
 
 void
-lang_hook_default_do_nothing ()
+lhd_do_nothing ()
 {
 }
 
 /* Do nothing; the default hook to decode an option.  */
 
 int
-lang_hook_default_decode_option (argc, argv)
+lhd_decode_option (argc, argv)
      int argc ATTRIBUTE_UNUSED;
      char **argv ATTRIBUTE_UNUSED;
 {
@@ -49,7 +50,7 @@ lang_hook_default_decode_option (argc, argv)
 /* Provide a default routine to clear the binding stack.  This is used
    by languages that don't need to do anything special.  */
 void
-lang_hook_default_clear_binding_stack ()
+lhd_clear_binding_stack ()
 {
   while (! global_bindings_p ())
     poplevel (0, 0, 0);
@@ -59,7 +60,7 @@ lang_hook_default_clear_binding_stack ()
    is used by languages that don't need to do anything special.  */
 
 HOST_WIDE_INT
-lang_hook_default_get_alias_set (t)
+lhd_get_alias_set (t)
      tree t ATTRIBUTE_UNUSED;
 {
   return -1;
@@ -87,7 +88,7 @@ hook_get_alias_set_0 (t)
    when the function is called.  */
 
 tree
-tree_inlining_default_hook_walk_subtrees (tp,subtrees,func,data,htab)
+lhd_tree_inlining_walk_subtrees (tp,subtrees,func,data,htab)
      tree *tp ATTRIBUTE_UNUSED;
      int *subtrees ATTRIBUTE_UNUSED;
      walk_tree_fn func ATTRIBUTE_UNUSED;
@@ -102,7 +103,7 @@ tree_inlining_default_hook_walk_subtrees (tp,subtrees,func,data,htab)
    inlining a given function.  */
 
 int
-tree_inlining_default_hook_cannot_inline_tree_fn (fnp)
+lhd_tree_inlining_cannot_inline_tree_fn (fnp)
      tree *fnp ATTRIBUTE_UNUSED;
 {
   return 0;
@@ -113,7 +114,7 @@ tree_inlining_default_hook_cannot_inline_tree_fn (fnp)
    if it would exceed inlining limits.  */
 
 int
-tree_inlining_default_hook_disregard_inline_limits (fn)
+lhd_tree_inlining_disregard_inline_limits (fn)
      tree fn ATTRIBUTE_UNUSED;
 {
   return 0;
@@ -127,7 +128,7 @@ tree_inlining_default_hook_disregard_inline_limits (fn)
    returned.  */
 
 tree
-tree_inlining_default_hook_add_pending_fn_decls (vafnp, pfn)
+lhd_tree_inlining_add_pending_fn_decls (vafnp, pfn)
      void *vafnp ATTRIBUTE_UNUSED;
      tree pfn;
 {
@@ -139,7 +140,7 @@ tree_inlining_default_hook_add_pending_fn_decls (vafnp, pfn)
    whether it should be walked, copied and preserved across copies.  */
 
 int
-tree_inlining_default_hook_tree_chain_matters_p (t)
+lhd_tree_inlining_tree_chain_matters_p (t)
      tree t ATTRIBUTE_UNUSED;
 {
   return 0;
@@ -149,7 +150,7 @@ tree_inlining_default_hook_tree_chain_matters_p (t)
    whether VT is an automatic variable defined in function FT.  */
 
 int
-tree_inlining_default_hook_auto_var_in_fn_p (var, fn)
+lhd_tree_inlining_auto_var_in_fn_p (var, fn)
      tree var, fn;
 {
   return (DECL_P (var) && DECL_CONTEXT (var) == fn
@@ -169,8 +170,8 @@ tree_inlining_default_hook_auto_var_in_fn_p (var, fn)
    match RES.  */
 
 tree
-tree_inlining_default_hook_copy_res_decl_for_inlining (res, fn, caller,
-                                                      dm, ndp, texps)
+lhd_tree_inlining_copy_res_decl_for_inlining (res, fn, caller,
+                                             dm, ndp, texps)
      tree res, fn, caller;
      void *dm ATTRIBUTE_UNUSED;
      int *ndp ATTRIBUTE_UNUSED;
@@ -184,7 +185,7 @@ tree_inlining_default_hook_copy_res_decl_for_inlining (res, fn, caller,
    i.e., one whose members are in the same scope as the union itself.  */
 
 int
-tree_inlining_default_hook_anon_aggr_type_p (t)
+lhd_tree_inlining_anon_aggr_type_p (t)
      tree t ATTRIBUTE_UNUSED;
 {
   return 0;
index d844cdb94141364197da81e5b046b639567364f0..2f97b7ae491cce6665ff2ec8f6a5f6ead4ffa6c0 100644 (file)
@@ -1,6 +1,5 @@
-/* Default macros to initialize the lang_hooks data structure.
+/* The lang_hooks data structure.
    Copyright 2001 Free Software Foundation, Inc.
-   Contributed by Alexandre Oliva  <aoliva@redhat.com>
 
 This file is part of GNU CC.
 
@@ -22,92 +21,73 @@ Boston, MA 02111-1307, USA.  */
 #ifndef GCC_LANG_HOOKS_H
 #define GCC_LANG_HOOKS_H
 
-/* Provide a hook routine for alias sets that always returns 1.  This is
-   used by languages that haven't deal with alias sets yet.  */
-extern HOST_WIDE_INT hook_get_alias_set_0      PARAMS ((tree));
-
-/* Note to creators of new hooks:
-
-   The macros in this file should NOT be surrounded by a
-   #ifdef...#endif pair, since this file declares the defaults.  Each
-   front end overrides any hooks it wishes to, in the file containing
-   its struct lang_hooks, AFTER including this file.  */
-
-/* See toplev.h for the definition and documentation of each hook.  */
-
-extern void lang_hook_default_do_nothing PARAMS ((void));
-extern int lang_hook_default_decode_option PARAMS ((int, char **));
-extern HOST_WIDE_INT lang_hook_default_get_alias_set PARAMS ((tree));
-extern void lang_hook_default_clear_binding_stack PARAMS ((void));
-
-#define LANG_HOOKS_INIT                        lang_hook_default_do_nothing
-#define LANG_HOOKS_FINISH              lang_hook_default_do_nothing
-#define LANG_HOOKS_CLEAR_BINDING_STACK lang_hook_default_clear_binding_stack
-#define LANG_HOOKS_INIT_OPTIONS                lang_hook_default_do_nothing
-#define LANG_HOOKS_DECODE_OPTION       lang_hook_default_decode_option
-#define LANG_HOOKS_POST_OPTIONS                lang_hook_default_do_nothing
-#define LANG_HOOKS_GET_ALIAS_SET       lang_hook_default_get_alias_set
-
-#define LANG_HOOKS_HONOR_READONLY      false
-
-/* Declarations of default tree inlining hooks.  */
-tree tree_inlining_default_hook_walk_subtrees          PARAMS ((tree *, int *,
-                                                                walk_tree_fn,
-                                                                void *,
-                                                                void *));
-int tree_inlining_default_hook_cannot_inline_tree_fn   PARAMS ((tree *));
-int tree_inlining_default_hook_disregard_inline_limits PARAMS ((tree));
-tree tree_inlining_default_hook_add_pending_fn_decls   PARAMS ((void *,
-                                                                tree));
-int tree_inlining_default_hook_tree_chain_matters_p    PARAMS ((tree));
-int tree_inlining_default_hook_auto_var_in_fn_p                PARAMS ((tree, tree));
-tree tree_inlining_default_hook_copy_res_decl_for_inlining PARAMS ((tree, tree,
-                                                                   tree,
-                                                                   void *,
-                                                                   int *,
-                                                                   void *));
-int tree_inlining_default_hook_anon_aggr_type_p                PARAMS ((tree));
-
-/* Tree inlining hooks.  */
-#define LANG_HOOKS_TREE_INLINING_WALK_SUBTREES \
-  tree_inlining_default_hook_walk_subtrees
-#define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \
-  tree_inlining_default_hook_cannot_inline_tree_fn
-#define LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS \
-  tree_inlining_default_hook_disregard_inline_limits
-#define LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS \
-  tree_inlining_default_hook_add_pending_fn_decls
-#define LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P \
-  tree_inlining_default_hook_tree_chain_matters_p
-#define LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P \
-  tree_inlining_default_hook_auto_var_in_fn_p
-#define LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING \
-  tree_inlining_default_hook_copy_res_decl_for_inlining
-#define LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \
-  tree_inlining_default_hook_anon_aggr_type_p
-
-#define LANG_HOOKS_TREE_INLINING_INITIALIZER { \
-  LANG_HOOKS_TREE_INLINING_WALK_SUBTREES, \
-  LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN, \
-  LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS, \
-  LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS, \
-  LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P, \
-  LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P, \
-  LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING, \
-  LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \
-} \
-
-/* The whole thing.  The structure is defined in toplev.h.  */
-#define LANG_HOOKS_INITIALIZER { \
-  LANG_HOOKS_INIT, \
-  LANG_HOOKS_FINISH, \
-  LANG_HOOKS_CLEAR_BINDING_STACK, \
-  LANG_HOOKS_INIT_OPTIONS, \
-  LANG_HOOKS_DECODE_OPTION, \
-  LANG_HOOKS_POST_OPTIONS, \
-  LANG_HOOKS_GET_ALIAS_SET, \
-  LANG_HOOKS_HONOR_READONLY, \
-  LANG_HOOKS_TREE_INLINING_INITIALIZER \
-}
+/* The following hooks are documented in langhooks.c.  Must not be
+   NULL.  */
+
+struct lang_hooks_for_tree_inlining
+{
+  union tree_node *(*walk_subtrees) PARAMS ((union tree_node **, int *,
+                                            union tree_node *(*)
+                                            (union tree_node **,
+                                             int *, void *),
+                                            void *, void *));
+  int (*cannot_inline_tree_fn) PARAMS ((union tree_node **));
+  int (*disregard_inline_limits) PARAMS ((union tree_node *));
+  union tree_node *(*add_pending_fn_decls) PARAMS ((void *,
+                                                   union tree_node *));
+  int (*tree_chain_matters_p) PARAMS ((union tree_node *));
+  int (*auto_var_in_fn_p) PARAMS ((union tree_node *, union tree_node *));
+  union tree_node *(*copy_res_decl_for_inlining) PARAMS ((union tree_node *,
+                                                         union tree_node *,
+                                                         union tree_node *,
+                                                         void *, int *,
+                                                         void *));
+  int (*anon_aggr_type_p) PARAMS ((union tree_node *));
+};
+
+/* Language-specific hooks.  See langhooks-def.h for defaults.  */
+
+struct lang_hooks
+{
+  /* Called first, to initialize the front end.  */
+  void (*init) PARAMS ((void));
+
+  /* Called last, as a finalizer.  */
+  void (*finish) PARAMS ((void));
+
+  /* Called immediately after parsing to clear the binding stack.  */
+  void (*clear_binding_stack) PARAMS ((void));
+
+  /* Called to initialize options, before any calls to decode_option.  */
+  void (*init_options) PARAMS ((void));
+
+  /* Function called with an option vector as argument, to decode a
+     single option (typically starting with -f or -W or +).  It should
+     return the number of command-line arguments it uses if it handles
+     the option, or 0 and not complain if it does not recognise the
+     option.  If this function returns a negative number, then its
+     absolute value is the number of command-line arguments used, but,
+     in addition, no language-independent option processing should be
+     done for this option.  */
+  int (*decode_option) PARAMS ((int, char **));
+
+  /* Called when all command line options have been processed.  */
+  void (*post_options) PARAMS ((void));
+
+  /* Called to obtain the alias set to be used for an expression or type.
+     Returns -1 if the language does nothing special for it.  */
+  HOST_WIDE_INT (*get_alias_set) PARAMS ((tree));
+
+  /* Nonzero if TYPE_READONLY and TREE_READONLY should always be honored.  */
+  bool honor_readonly;
+
+  struct lang_hooks_for_tree_inlining tree_inlining;
+
+  /* Whenever you add entries here, make sure you adjust langhooks.h
+     and langhooks.c accordingly.  */
+};
+
+/* Each front end provides its own.  */
+extern struct lang_hooks lang_hooks;
 
 #endif /* GCC_LANG_HOOKS_H */
index a60ed793f4a1bb7d3a96103a01991f44a1bcb46d..9b777d4289da9fb78182721a84fc5da6f113afc0 100644 (file)
@@ -80,7 +80,8 @@ objc-act.o : $(srcdir)/objc/objc-act.c \
    $(CONFIG_H) $(TREE_H) $(RTL_H) $(SYSTEM_H) $(EXPR_H) $(TARGET_H) \
    $(srcdir)/c-tree.h $(srcdir)/c-common.h $(srcdir)/c-lex.h \
    $(srcdir)/toplev.h $(srcdir)/flags.h $(srcdir)/objc/objc-act.h \
-   $(srcdir)/input.h $(srcdir)/function.h $(srcdir)/output.h $(srcdir)/debug.h
+   $(srcdir)/input.h $(srcdir)/function.h $(srcdir)/output.h $(srcdir)/debug.h \
+   $(srcdir)/langhooks.h $(srcdir)/langhooks-def.h
        $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -I$(srcdir)/objc \
        -c $(srcdir)/objc/objc-act.c
 
index c78e00c8f3f9f13aa4918daee5c015f58ab79fda..4e1c48de2a61f8a882a867e459210d825d65340a 100644 (file)
@@ -59,6 +59,7 @@ Boston, MA 02111-1307, USA.  */
 #include "debug.h"
 #include "target.h"
 #include "langhooks.h"
+#include "langhooks-def.h"
 
 /* This is the default way of generating a method name.  */
 /* I am not sure it is really correct.
index ad23683f45eb2b253d70496f060cd5be09a0455f..2451aced5a6ba26dcbaab70d10a52a7a61213449 100644 (file)
@@ -68,6 +68,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include "integrate.h"
 #include "debug.h"
 #include "target.h"
+#include "langhooks.h"
 
 #if defined (DWARF2_UNWIND_INFO) || defined (DWARF2_DEBUGGING_INFO)
 #include "dwarf2out.h"
index 8f21b031baf97134021ad0e53876ef6fd69d5261..74fef17f4595bac06473119e7db5e4c3e390ef45 100644 (file)
@@ -115,75 +115,6 @@ extern void check_global_declarations   PARAMS ((union tree_node **, int));
 extern const char *progname;
 extern const char *dump_base_name;
 
-/* The following hooks are documented in langhooks.c.  Must not be
-   NULL.  */
-
-struct lang_hooks_for_tree_inlining
-{
-  union tree_node *(*walk_subtrees) PARAMS ((union tree_node **, int *,
-                                            union tree_node *(*)
-                                            (union tree_node **,
-                                             int *, void *),
-                                            void *, void *));
-  int (*cannot_inline_tree_fn) PARAMS ((union tree_node **));
-  int (*disregard_inline_limits) PARAMS ((union tree_node *));
-  union tree_node *(*add_pending_fn_decls) PARAMS ((void *,
-                                                   union tree_node *));
-  int (*tree_chain_matters_p) PARAMS ((union tree_node *));
-  int (*auto_var_in_fn_p) PARAMS ((union tree_node *, union tree_node *));
-  union tree_node *(*copy_res_decl_for_inlining) PARAMS ((union tree_node *,
-                                                         union tree_node *,
-                                                         union tree_node *,
-                                                         void *, int *,
-                                                         void *));
-  int (*anon_aggr_type_p) PARAMS ((union tree_node *));
-};
-
-/* Language-specific hooks.  See langhooks.h for defaults.  */
-
-struct lang_hooks
-{
-  /* Called first, to initialize the front end.  */
-  void (*init) PARAMS ((void));
-
-  /* Called last, as a finalizer.  */
-  void (*finish) PARAMS ((void));
-
-  /* Called immediately after parsing to clear the binding stack.  */
-  void (*clear_binding_stack) PARAMS ((void));
-
-  /* Called to initialize options, before any calls to decode_option.  */
-  void (*init_options) PARAMS ((void));
-
-  /* Function called with an option vector as argument, to decode a
-     single option (typically starting with -f or -W or +).  It should
-     return the number of command-line arguments it uses if it handles
-     the option, or 0 and not complain if it does not recognise the
-     option.  If this function returns a negative number, then its
-     absolute value is the number of command-line arguments used, but,
-     in addition, no language-independent option processing should be
-     done for this option.  */
-  int (*decode_option) PARAMS ((int, char **));
-
-  /* Called when all command line options have been processed.  */
-  void (*post_options) PARAMS ((void));
-
-  /* Called to obtain the alias set to be used for an expression or type.
-     Returns -1 if the language does nothing special for it.  */
-  HOST_WIDE_INT (*get_alias_set) PARAMS ((tree));
-
-  /* Nonzero if TYPE_READONLY and TREE_READONLY should always be honored.  */
-  bool honor_readonly;
-
-  struct lang_hooks_for_tree_inlining tree_inlining;
-
-  /* Whenever you add entries here, make sure you adjust langhooks.h
-     and langhooks.c accordingly.  */
-};
-
-/* Each front end provides its own.  */
-extern struct lang_hooks lang_hooks;
-
 /* The hashtable, so that the C front ends can pass it to cpplib.  */
 extern struct ht *ident_hash;
 
index 865ec234caa9fbb1a88a1d25ff1cab03c46e8663..a4f483ae3e46842f22141dc2634b06c4ec54245b 100644 (file)
@@ -34,6 +34,7 @@ Boston, MA 02111-1307, USA.  */
 #include "varray.h"
 #include "hashtab.h"
 #include "splay-tree.h"
+#include "langhooks.h"
 
 /* This should be eventually be generalized to other languages, but
    this would require a shared function-as-trees infrastructure.  */