langhooks-def.h revision 107590
120253Sjoerg/* Default macros to initialize the lang_hooks data structure. 220302Sjoerg Copyright 2001 Free Software Foundation, Inc. 320302Sjoerg Contributed by Alexandre Oliva <aoliva@redhat.com> 420253Sjoerg 520253SjoergThis file is part of GNU CC. 620253Sjoerg 720253SjoergGNU CC is free software; you can redistribute it and/or modify 820253Sjoergit under the terms of the GNU General Public License as published by 920302Sjoergthe Free Software Foundation; either version 2, or (at your option) 1020253Sjoergany later version. 1120253Sjoerg 1220253SjoergGNU CC is distributed in the hope that it will be useful, 1320253Sjoergbut WITHOUT ANY WARRANTY; without even the implied warranty of 1420302SjoergMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1520253SjoergGNU General Public License for more details. 1620253Sjoerg 1720302SjoergYou should have received a copy of the GNU General Public License 1820253Sjoergalong with GNU CC; see the file COPYING. If not, write to 1920253Sjoergthe Free Software Foundation, 59 Temple Place - Suite 330, 2020253SjoergBoston, MA 02111-1307, USA. */ 2120253Sjoerg 2220253Sjoerg#ifndef GCC_LANG_HOOKS_DEF_H 2320253Sjoerg#define GCC_LANG_HOOKS_DEF_H 2420253Sjoerg 2520253Sjoerg#include "hooks.h" 2620253Sjoerg 2730259Scharnier/* Provide a hook routine for alias sets that always returns 1. This is 2830259Scharnier used by languages that haven't deal with alias sets yet. */ 2930259Scharnierextern HOST_WIDE_INT hook_get_alias_set_0 PARAMS ((tree)); 3030259Scharnier 3130259Scharnier/* Note to creators of new hooks: 3230259Scharnier 3330259Scharnier The macros in this file should NOT be surrounded by a 3430259Scharnier #ifdef...#endif pair, since this file declares the defaults. Each 3520253Sjoerg front end overrides any hooks it wishes to, in the file containing 3620253Sjoerg its struct lang_hooks, AFTER including this file. 3720253Sjoerg 3830259Scharnier Prefix all default hooks with "lhd_". */ 3920253Sjoerg 4020253Sjoerg/* See langhooks.h for the definition and documentation of each hook. */ 4130259Scharnier 4220253Sjoergextern void lhd_do_nothing PARAMS ((void)); 4320253Sjoergextern int lhd_decode_option PARAMS ((int, char **)); 4420253Sjoergextern HOST_WIDE_INT lhd_get_alias_set PARAMS ((tree)); 4520253Sjoergextern tree lhd_return_tree PARAMS ((tree)); 4620253Sjoergextern int lhd_safe_from_p PARAMS ((rtx, tree)); 4720253Sjoergextern int lhd_staticp PARAMS ((tree)); 4820253Sjoergextern void lhd_clear_binding_stack PARAMS ((void)); 4920253Sjoergextern void lhd_print_tree_nothing PARAMS ((FILE *, tree, int)); 5020253Sjoergextern void lhd_set_yydebug PARAMS ((int)); 5120253Sjoergextern tree lhd_expr_size PARAMS ((tree)); 5220253Sjoerg 5320253Sjoerg/* Declarations of default tree inlining hooks. */ 5430259Scharniertree lhd_tree_inlining_walk_subtrees PARAMS ((tree *, int *, 5520253Sjoerg walk_tree_fn, 5620253Sjoerg void *, void *)); 5720253Sjoergint lhd_tree_inlining_cannot_inline_tree_fn PARAMS ((tree *)); 5820253Sjoergint lhd_tree_inlining_disregard_inline_limits PARAMS ((tree)); 5920253Sjoergtree lhd_tree_inlining_add_pending_fn_decls PARAMS ((void *, tree)); 6020253Sjoergint lhd_tree_inlining_tree_chain_matters_p PARAMS ((tree)); 6120253Sjoergint lhd_tree_inlining_auto_var_in_fn_p PARAMS ((tree, tree)); 6220253Sjoergtree lhd_tree_inlining_copy_res_decl_for_inlining PARAMS ((tree, tree, 6320253Sjoerg tree, void *, 6420253Sjoerg int *, void *)); 6520253Sjoergint lhd_tree_inlining_anon_aggr_type_p PARAMS ((tree)); 6620253Sjoergint lhd_tree_inlining_start_inlining PARAMS ((tree)); 6720253Sjoergvoid lhd_tree_inlining_end_inlining PARAMS ((tree)); 6820253Sjoergtree lhd_tree_inlining_convert_parm_for_inlining PARAMS ((tree, tree, tree)); 6920253Sjoerg 7020253Sjoerg#define LANG_HOOKS_NAME "GNU unknown" 7120253Sjoerg#define LANG_HOOKS_IDENTIFIER_SIZE sizeof (struct lang_identifier) 7220253Sjoerg#define LANG_HOOKS_INIT lhd_do_nothing 7320253Sjoerg#define LANG_HOOKS_FINISH lhd_do_nothing 7420253Sjoerg#define LANG_HOOKS_CLEAR_BINDING_STACK lhd_clear_binding_stack 7520253Sjoerg#define LANG_HOOKS_INIT_OPTIONS lhd_do_nothing 7620253Sjoerg#define LANG_HOOKS_DECODE_OPTION lhd_decode_option 7720253Sjoerg#define LANG_HOOKS_POST_OPTIONS hook_void_void 7820253Sjoerg#define LANG_HOOKS_GET_ALIAS_SET lhd_get_alias_set 7920253Sjoerg#define LANG_HOOKS_EXPAND_CONSTANT lhd_return_tree 8020253Sjoerg#define LANG_HOOKS_SAFE_FROM_P lhd_safe_from_p 8120253Sjoerg#define LANG_HOOKS_STATICP lhd_staticp 8220253Sjoerg#define LANG_HOOKS_HONOR_READONLY false 8320253Sjoerg#define LANG_HOOKS_PRINT_STATISTICS lhd_do_nothing 8420253Sjoerg#define LANG_HOOKS_PRINT_XNODE lhd_print_tree_nothing 8520253Sjoerg#define LANG_HOOKS_PRINT_DECL lhd_print_tree_nothing 8620253Sjoerg#define LANG_HOOKS_PRINT_TYPE lhd_print_tree_nothing 8720253Sjoerg#define LANG_HOOKS_PRINT_IDENTIFIER lhd_print_tree_nothing 8820253Sjoerg#define LANG_HOOKS_SET_YYDEBUG lhd_set_yydebug 8920253Sjoerg#define LANG_HOOKS_EXPR_SIZE lhd_expr_size 9020253Sjoerg 9120253Sjoerg/* Tree inlining hooks. */ 9220253Sjoerg#define LANG_HOOKS_TREE_INLINING_WALK_SUBTREES lhd_tree_inlining_walk_subtrees 9320253Sjoerg#define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \ 9420253Sjoerg lhd_tree_inlining_cannot_inline_tree_fn 9520253Sjoerg#define LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS \ 9620253Sjoerg lhd_tree_inlining_disregard_inline_limits 9720253Sjoerg#define LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS \ 9820253Sjoerg lhd_tree_inlining_add_pending_fn_decls 9920253Sjoerg#define LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P \ 10020253Sjoerg lhd_tree_inlining_tree_chain_matters_p 10120253Sjoerg#define LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P \ 10220253Sjoerg lhd_tree_inlining_auto_var_in_fn_p 10320253Sjoerg#define LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING \ 10420253Sjoerg lhd_tree_inlining_copy_res_decl_for_inlining 10520253Sjoerg#define LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \ 10620253Sjoerg lhd_tree_inlining_anon_aggr_type_p 10720253Sjoerg#define LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P \ 10820253Sjoerg hook_tree_bool_false 10920253Sjoerg#define LANG_HOOKS_TREE_INLINING_START_INLINING \ 11020253Sjoerg lhd_tree_inlining_start_inlining 11120253Sjoerg#define LANG_HOOKS_TREE_INLINING_END_INLINING \ 11220253Sjoerg lhd_tree_inlining_end_inlining 11320253Sjoerg#define LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING \ 11420253Sjoerg lhd_tree_inlining_convert_parm_for_inlining 11520253Sjoerg 11620267Sjoerg#define LANG_HOOKS_TREE_INLINING_INITIALIZER { \ 117 LANG_HOOKS_TREE_INLINING_WALK_SUBTREES, \ 118 LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN, \ 119 LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS, \ 120 LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS, \ 121 LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P, \ 122 LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P, \ 123 LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING, \ 124 LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P, \ 125 LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P, \ 126 LANG_HOOKS_TREE_INLINING_START_INLINING, \ 127 LANG_HOOKS_TREE_INLINING_END_INLINING, \ 128 LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING \ 129} \ 130 131/* Tree dump hooks. */ 132int lhd_tree_dump_dump_tree PARAMS ((void *, tree)); 133int lhd_tree_dump_type_quals PARAMS ((tree)); 134 135#define LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN lhd_tree_dump_dump_tree 136#define LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN lhd_tree_dump_type_quals 137 138#define LANG_HOOKS_TREE_DUMP_INITIALIZER { \ 139 LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN, \ 140 LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN \ 141} \ 142 143/* The whole thing. The structure is defined in langhooks.h. */ 144#define LANG_HOOKS_INITIALIZER { \ 145 LANG_HOOKS_NAME, \ 146 LANG_HOOKS_IDENTIFIER_SIZE, \ 147 LANG_HOOKS_INIT_OPTIONS, \ 148 LANG_HOOKS_DECODE_OPTION, \ 149 LANG_HOOKS_POST_OPTIONS, \ 150 LANG_HOOKS_INIT, \ 151 LANG_HOOKS_FINISH, \ 152 LANG_HOOKS_CLEAR_BINDING_STACK, \ 153 LANG_HOOKS_GET_ALIAS_SET, \ 154 LANG_HOOKS_EXPAND_CONSTANT, \ 155 LANG_HOOKS_SAFE_FROM_P, \ 156 LANG_HOOKS_STATICP, \ 157 LANG_HOOKS_HONOR_READONLY, \ 158 LANG_HOOKS_PRINT_STATISTICS, \ 159 LANG_HOOKS_PRINT_XNODE, \ 160 LANG_HOOKS_PRINT_DECL, \ 161 LANG_HOOKS_PRINT_TYPE, \ 162 LANG_HOOKS_PRINT_IDENTIFIER, \ 163 LANG_HOOKS_SET_YYDEBUG, \ 164 LANG_HOOKS_EXPR_SIZE, \ 165 LANG_HOOKS_TREE_INLINING_INITIALIZER, \ 166 LANG_HOOKS_TREE_DUMP_INITIALIZER \ 167} 168 169#endif /* GCC_LANG_HOOKS_DEF_H */ 170