[RFA] Clean up langhooks

Neil Booth neil@daikokuya.demon.co.uk
Tue Nov 6 11:51:00 GMT 2001


This moves langhooks.h to langhooks-def.h, which is canonical with the
target hooks and some have asked for, and renames the default lang
hooks to have a common (shorter) prefix "lhd_".

Bootstrapped x86 Linux for C, ObjC, C++ and F77.  OK?

Neil.

	* 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.

============================================================
Index: gcc/alias.c
--- gcc/alias.c	2001/11/04 02:51:21	1.150
+++ gcc/alias.c	2001/11/06 19:39:55
@@ -35,6 +35,7 @@ Software Foundation, 59 Temple Place - S
 #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: gcc/c-lang.c
--- gcc/c-lang.c	2001/10/23 18:51:01	1.58
+++ gcc/c-lang.c	2001/11/06 19:39:57
@@ -39,6 +39,7 @@ Software Foundation, 59 Temple Place - S
 #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: gcc/emit-rtl.c
--- gcc/emit-rtl.c	2001/11/03 16:28:32	1.220
+++ gcc/emit-rtl.c	2001/11/06 19:40:07
@@ -55,6 +55,7 @@ Software Foundation, 59 Temple Place - S
 #include "basic-block.h"
 #include "ggc.h"
 #include "debug.h"
+#include "langhooks.h"
 
 /* Commonly used modes.  */
 
============================================================
Index: gcc/langhooks-def.h
--- /dev/null	Tue May  5 13:32:27 1998
+++ gcc/langhooks-def.h	Tue Nov  6 11:40:08 2001
@@ -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: gcc/langhooks.c
--- gcc/langhooks.c	2001/10/25 17:56:51	1.6
+++ gcc/langhooks.c	2001/11/06 19:40:08
@@ -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, a
 /* 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
    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
    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_inl
    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_f
    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_ma
    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_f
    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
    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: gcc/langhooks.h
--- gcc/langhooks.h	2001/10/25 17:56:51	1.5
+++ gcc/langhooks.h	2001/11/06 19:40:08
@@ -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: gcc/toplev.c
--- gcc/toplev.c	2001/11/04 02:51:22	1.532
+++ gcc/toplev.c	2001/11/06 19:40:20
@@ -68,6 +68,7 @@ Software Foundation, 59 Temple Place - S
 #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: gcc/toplev.h
--- gcc/toplev.h	2001/10/25 17:56:52	1.79
+++ gcc/toplev.h	2001/11/06 19:40:21
@@ -115,75 +115,6 @@ extern void check_global_declarations   
 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: gcc/tree-inline.c
--- gcc/tree-inline.c	2001/10/26 18:27:13	1.8
+++ gcc/tree-inline.c	2001/11/06 19:40:24
@@ -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.  */
============================================================
Index: gcc/ada/misc.c
--- gcc/ada/misc.c	2001/10/30 23:47:02	1.8
+++ gcc/ada/misc.c	2001/11/06 19:40:27
@@ -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: gcc/cp/cp-lang.c
--- gcc/cp/cp-lang.c	2001/10/25 17:57:03	1.3
+++ gcc/cp/cp-lang.c	2001/11/06 19:40:27
@@ -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: gcc/f/com.c
--- gcc/f/com.c	2001/11/02 15:53:27	1.136
+++ gcc/f/com.c	2001/11/06 19:40:57
@@ -90,6 +90,7 @@ the Free Software Foundation, 59 Temple 
 #include "ggc.h"
 #include "diagnostic.h"
 #include "langhooks.h"
+#include "langhooks-def.h"
 
 /* VMS-specific definitions */
 #ifdef VMS
============================================================
Index: gcc/java/lang.c
--- gcc/java/lang.c	2001/10/23 18:50:23	1.75
+++ gcc/java/lang.c	2001/11/06 19:41:08
@@ -35,6 +35,7 @@ The Free Software Foundation is independ
 #include "jcf.h"
 #include "toplev.h"
 #include "langhooks.h"
+#include "langhooks-def.h"
 #include "flags.h"
 #include "xref.h"
 #include "ggc.h"
============================================================
Index: gcc/objc/objc-act.c
--- gcc/objc/objc-act.c	2001/10/29 20:51:04	1.100
+++ gcc/objc/objc-act.c	2001/11/06 19:41:12
@@ -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.



More information about the Gcc-patches mailing list