diff options
author | Neil Booth <neil@cat.daikokuya.demon.co.uk> | 2001-11-06 21:12:14 +0000 |
---|---|---|
committer | Neil Booth <neil@gcc.gnu.org> | 2001-11-06 21:12:14 +0000 |
commit | d23c55c28c57c7e60d3fa9a0b252b9a1229c99fc (patch) | |
tree | e218294f121610ce23014b4b8954bac5d7230fd8 /gcc/langhooks.h | |
parent | 80f9249adae5fd98b349c0c72d8eb43f21ec44e9 (diff) | |
download | gcc-d23c55c28c57c7e60d3fa9a0b252b9a1229c99fc.zip gcc-d23c55c28c57c7e60d3fa9a0b252b9a1229c99fc.tar.gz gcc-d23c55c28c57c7e60d3fa9a0b252b9a1229c99fc.tar.bz2 |
Clean up langhooks
* 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
Diffstat (limited to 'gcc/langhooks.h')
-rw-r--r-- | gcc/langhooks.h | 158 |
1 files changed, 69 insertions, 89 deletions
diff --git a/gcc/langhooks.h b/gcc/langhooks.h index d844cdb..2f97b7a 100644 --- a/gcc/langhooks.h +++ b/gcc/langhooks.h @@ -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 */ |