source: trunk/src/gcc/gcc/langhooks-def.h@ 1392

Last change on this file since 1392 was 1392, checked in by bird, 21 years ago

This commit was generated by cvs2svn to compensate for changes in r1391,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 10.8 KB
Line 
1/* Default macros to initialize the lang_hooks data structure.
2 Copyright 2001, 2002 Free Software Foundation, Inc.
3 Contributed by Alexandre Oliva <aoliva@redhat.com>
4
5This file is part of GNU CC.
6
7GNU CC is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 2, or (at your option)
10any later version.
11
12GNU CC is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with GNU CC; see the file COPYING. If not, write to
19the Free Software Foundation, 59 Temple Place - Suite 330,
20Boston, MA 02111-1307, USA. */
21
22#ifndef GCC_LANG_HOOKS_DEF_H
23#define GCC_LANG_HOOKS_DEF_H
24
25#include "hooks.h"
26
27struct diagnostic_context;
28
29/* Provide a hook routine for alias sets that always returns 1. This is
30 used by languages that haven't deal with alias sets yet. */
31extern HOST_WIDE_INT hook_get_alias_set_0 PARAMS ((tree));
32
33/* Note to creators of new hooks:
34
35 The macros in this file should NOT be surrounded by a
36 #ifdef...#endif pair, since this file declares the defaults. Each
37 front end overrides any hooks it wishes to, in the file containing
38 its struct lang_hooks, AFTER including this file.
39
40 Prefix all default hooks with "lhd_". */
41
42/* See langhooks.h for the definition and documentation of each hook. */
43
44extern void lhd_do_nothing PARAMS ((void));
45extern void lhd_do_nothing_t PARAMS ((tree));
46extern void lhd_do_nothing_i PARAMS ((int));
47extern void lhd_do_nothing_f PARAMS ((struct function *));
48extern int lhd_decode_option PARAMS ((int, char **));
49extern HOST_WIDE_INT lhd_get_alias_set PARAMS ((tree));
50extern tree lhd_return_tree PARAMS ((tree));
51extern tree lhd_return_null_tree PARAMS ((tree));
52extern int lhd_safe_from_p PARAMS ((rtx, tree));
53extern int lhd_staticp PARAMS ((tree));
54extern int lhd_unsafe_for_reeval PARAMS ((tree));
55extern void lhd_clear_binding_stack PARAMS ((void));
56extern void lhd_print_tree_nothing PARAMS ((FILE *, tree, int));
57extern const char *lhd_decl_printable_name PARAMS ((tree, int));
58extern rtx lhd_expand_expr PARAMS ((tree, rtx, enum machine_mode, int));
59extern void lhd_print_error_function PARAMS ((struct diagnostic_context *,
60 const char *));
61extern void lhd_set_decl_assembler_name PARAMS ((tree));
62extern bool lhd_can_use_bit_fields_p PARAMS ((void));
63extern bool lhd_warn_unused_global_decl PARAMS ((tree));
64extern void lhd_incomplete_type_error PARAMS ((tree, tree));
65extern tree lhd_type_promotes_to PARAMS ((tree));
66extern bool lhd_decl_ok_for_sibcall PARAMS ((tree));
67extern tree lhd_expr_size PARAMS ((tree));
68
69/* Declarations of default tree inlining hooks. */
70tree lhd_tree_inlining_walk_subtrees PARAMS ((tree *, int *,
71 walk_tree_fn,
72 void *, void *));
73int lhd_tree_inlining_cannot_inline_tree_fn PARAMS ((tree *));
74int lhd_tree_inlining_disregard_inline_limits PARAMS ((tree));
75tree lhd_tree_inlining_add_pending_fn_decls PARAMS ((void *, tree));
76int lhd_tree_inlining_tree_chain_matters_p PARAMS ((tree));
77int lhd_tree_inlining_auto_var_in_fn_p PARAMS ((tree, tree));
78tree lhd_tree_inlining_copy_res_decl_for_inlining PARAMS ((tree, tree,
79 tree, void *,
80 int *, void *));
81int lhd_tree_inlining_anon_aggr_type_p PARAMS ((tree));
82int lhd_tree_inlining_start_inlining PARAMS ((tree));
83void lhd_tree_inlining_end_inlining PARAMS ((tree));
84tree lhd_tree_inlining_convert_parm_for_inlining PARAMS ((tree, tree, tree));
85
86void write_global_declarations PARAMS ((void));
87
88#define LANG_HOOKS_NAME "GNU unknown"
89#define LANG_HOOKS_IDENTIFIER_SIZE sizeof (struct lang_identifier)
90#define LANG_HOOKS_INIT lhd_do_nothing
91#define LANG_HOOKS_FINISH lhd_do_nothing
92#define LANG_HOOKS_PARSE_FILE lhd_do_nothing_i
93#define LANG_HOOKS_CLEAR_BINDING_STACK lhd_clear_binding_stack
94#define LANG_HOOKS_INIT_OPTIONS lhd_do_nothing
95#define LANG_HOOKS_DECODE_OPTION lhd_decode_option
96#define LANG_HOOKS_POST_OPTIONS hook_bool_void_false
97#define LANG_HOOKS_GET_ALIAS_SET lhd_get_alias_set
98#define LANG_HOOKS_EXPAND_CONSTANT lhd_return_tree
99#define LANG_HOOKS_EXPAND_EXPR lhd_expand_expr
100#define LANG_HOOKS_SAFE_FROM_P lhd_safe_from_p
101#define LANG_HOOKS_FINISH_INCOMPLETE_DECL lhd_do_nothing_t
102#define LANG_HOOKS_UNSAFE_FOR_REEVAL lhd_unsafe_for_reeval
103#define LANG_HOOKS_STATICP lhd_staticp
104#define LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES lhd_do_nothing_t
105#define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL lhd_do_nothing_t
106#define LANG_HOOKS_UNSAVE_EXPR_NOW lhd_unsave_expr_now
107#define LANG_HOOKS_MAYBE_BUILD_CLEANUP lhd_return_null_tree
108#define LANG_HOOKS_SET_DECL_ASSEMBLER_NAME lhd_set_decl_assembler_name
109#define LANG_HOOKS_CAN_USE_BIT_FIELDS_P lhd_can_use_bit_fields_p
110#define LANG_HOOKS_HONOR_READONLY false
111#define LANG_HOOKS_PRINT_STATISTICS lhd_do_nothing
112#define LANG_HOOKS_PRINT_XNODE lhd_print_tree_nothing
113#define LANG_HOOKS_PRINT_DECL lhd_print_tree_nothing
114#define LANG_HOOKS_PRINT_TYPE lhd_print_tree_nothing
115#define LANG_HOOKS_PRINT_IDENTIFIER lhd_print_tree_nothing
116#define LANG_HOOKS_PRINT_ERROR_FUNCTION lhd_print_error_function
117#define LANG_HOOKS_DECL_PRINTABLE_NAME lhd_decl_printable_name
118#define LANG_HOOKS_EXPR_SIZE lhd_expr_size
119
120#define LANG_HOOKS_FUNCTION_INIT lhd_do_nothing_f
121#define LANG_HOOKS_FUNCTION_FINAL lhd_do_nothing_f
122#define LANG_HOOKS_FUNCTION_ENTER_NESTED lhd_do_nothing_f
123#define LANG_HOOKS_FUNCTION_LEAVE_NESTED lhd_do_nothing_f
124
125/* Attribute hooks. */
126#define LANG_HOOKS_ATTRIBUTE_TABLE NULL
127#define LANG_HOOKS_COMMON_ATTRIBUTE_TABLE NULL
128#define LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE NULL
129
130/* Tree inlining hooks. */
131#define LANG_HOOKS_TREE_INLINING_WALK_SUBTREES lhd_tree_inlining_walk_subtrees
132#define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \
133 lhd_tree_inlining_cannot_inline_tree_fn
134#define LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS \
135 lhd_tree_inlining_disregard_inline_limits
136#define LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS \
137 lhd_tree_inlining_add_pending_fn_decls
138#define LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P \
139 lhd_tree_inlining_tree_chain_matters_p
140#define LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P \
141 lhd_tree_inlining_auto_var_in_fn_p
142#define LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING \
143 lhd_tree_inlining_copy_res_decl_for_inlining
144#define LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \
145 lhd_tree_inlining_anon_aggr_type_p
146#define LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P \
147 hook_bool_tree_false
148#define LANG_HOOKS_TREE_INLINING_START_INLINING \
149 lhd_tree_inlining_start_inlining
150#define LANG_HOOKS_TREE_INLINING_END_INLINING \
151 lhd_tree_inlining_end_inlining
152#define LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING \
153 lhd_tree_inlining_convert_parm_for_inlining
154
155#define LANG_HOOKS_TREE_INLINING_INITIALIZER { \
156 LANG_HOOKS_TREE_INLINING_WALK_SUBTREES, \
157 LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN, \
158 LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS, \
159 LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS, \
160 LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P, \
161 LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P, \
162 LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING, \
163 LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P, \
164 LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P, \
165 LANG_HOOKS_TREE_INLINING_START_INLINING, \
166 LANG_HOOKS_TREE_INLINING_END_INLINING, \
167 LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING \
168} \
169
170#define LANG_HOOKS_FUNCTION_INITIALIZER { \
171 LANG_HOOKS_FUNCTION_INIT, \
172 LANG_HOOKS_FUNCTION_FINAL, \
173 LANG_HOOKS_FUNCTION_ENTER_NESTED, \
174 LANG_HOOKS_FUNCTION_LEAVE_NESTED \
175}
176
177/* Tree dump hooks. */
178int lhd_tree_dump_dump_tree PARAMS ((void *, tree));
179int lhd_tree_dump_type_quals PARAMS ((tree));
180
181#define LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN lhd_tree_dump_dump_tree
182#define LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN lhd_tree_dump_type_quals
183
184#define LANG_HOOKS_TREE_DUMP_INITIALIZER { \
185 LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN, \
186 LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN \
187}
188
189/* Types hooks. There are no reasonable defaults for most of them,
190 so we create a compile-time error instead. */
191#define LANG_HOOKS_MAKE_TYPE make_node
192#define LANG_HOOKS_INCOMPLETE_TYPE_ERROR lhd_incomplete_type_error
193#define LANG_HOOKS_TYPE_PROMOTES_TO lhd_type_promotes_to
194
195#define LANG_HOOKS_FOR_TYPES_INITIALIZER { \
196 LANG_HOOKS_MAKE_TYPE, \
197 LANG_HOOKS_TYPE_FOR_MODE, \
198 LANG_HOOKS_TYPE_FOR_SIZE, \
199 LANG_HOOKS_UNSIGNED_TYPE, \
200 LANG_HOOKS_SIGNED_TYPE, \
201 LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE, \
202 LANG_HOOKS_TYPE_PROMOTES_TO, \
203 LANG_HOOKS_INCOMPLETE_TYPE_ERROR \
204}
205
206/* Declaration hooks. */
207#define LANG_HOOKS_PUSHLEVEL pushlevel
208#define LANG_HOOKS_POPLEVEL poplevel
209#define LANG_HOOKS_GLOBAL_BINDINGS_P global_bindings_p
210#define LANG_HOOKS_INSERT_BLOCK insert_block
211#define LANG_HOOKS_SET_BLOCK set_block
212#define LANG_HOOKS_PUSHDECL pushdecl
213#define LANG_HOOKS_GETDECLS getdecls
214#define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL lhd_warn_unused_global_decl
215#define LANG_HOOKS_WRITE_GLOBALS write_global_declarations
216#define LANG_HOOKS_DECL_OK_FOR_SIBCALL lhd_decl_ok_for_sibcall
217
218#define LANG_HOOKS_DECLS { \
219 LANG_HOOKS_PUSHLEVEL, \
220 LANG_HOOKS_POPLEVEL, \
221 LANG_HOOKS_GLOBAL_BINDINGS_P, \
222 LANG_HOOKS_INSERT_BLOCK, \
223 LANG_HOOKS_SET_BLOCK, \
224 LANG_HOOKS_PUSHDECL, \
225 LANG_HOOKS_GETDECLS, \
226 LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL, \
227 LANG_HOOKS_WRITE_GLOBALS, \
228 LANG_HOOKS_DECL_OK_FOR_SIBCALL, \
229}
230
231/* The whole thing. The structure is defined in langhooks.h. */
232#define LANG_HOOKS_INITIALIZER { \
233 LANG_HOOKS_NAME, \
234 LANG_HOOKS_IDENTIFIER_SIZE, \
235 LANG_HOOKS_INIT_OPTIONS, \
236 LANG_HOOKS_DECODE_OPTION, \
237 LANG_HOOKS_POST_OPTIONS, \
238 LANG_HOOKS_INIT, \
239 LANG_HOOKS_FINISH, \
240 LANG_HOOKS_PARSE_FILE, \
241 LANG_HOOKS_CLEAR_BINDING_STACK, \
242 LANG_HOOKS_GET_ALIAS_SET, \
243 LANG_HOOKS_EXPAND_CONSTANT, \
244 LANG_HOOKS_EXPAND_EXPR, \
245 LANG_HOOKS_TRUTHVALUE_CONVERSION, \
246 LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES, \
247 LANG_HOOKS_SAFE_FROM_P, \
248 LANG_HOOKS_FINISH_INCOMPLETE_DECL, \
249 LANG_HOOKS_UNSAFE_FOR_REEVAL, \
250 LANG_HOOKS_MARK_ADDRESSABLE, \
251 LANG_HOOKS_STATICP, \
252 LANG_HOOKS_DUP_LANG_SPECIFIC_DECL, \
253 LANG_HOOKS_UNSAVE_EXPR_NOW, \
254 LANG_HOOKS_MAYBE_BUILD_CLEANUP, \
255 LANG_HOOKS_SET_DECL_ASSEMBLER_NAME, \
256 LANG_HOOKS_CAN_USE_BIT_FIELDS_P, \
257 LANG_HOOKS_HONOR_READONLY, \
258 LANG_HOOKS_PRINT_STATISTICS, \
259 LANG_HOOKS_PRINT_XNODE, \
260 LANG_HOOKS_PRINT_DECL, \
261 LANG_HOOKS_PRINT_TYPE, \
262 LANG_HOOKS_PRINT_IDENTIFIER, \
263 LANG_HOOKS_DECL_PRINTABLE_NAME, \
264 LANG_HOOKS_PRINT_ERROR_FUNCTION, \
265 LANG_HOOKS_EXPR_SIZE, \
266 LANG_HOOKS_ATTRIBUTE_TABLE, \
267 LANG_HOOKS_COMMON_ATTRIBUTE_TABLE, \
268 LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE, \
269 LANG_HOOKS_FUNCTION_INITIALIZER, \
270 LANG_HOOKS_TREE_INLINING_INITIALIZER, \
271 LANG_HOOKS_TREE_DUMP_INITIALIZER, \
272 LANG_HOOKS_DECLS, \
273 LANG_HOOKS_FOR_TYPES_INITIALIZER \
274}
275
276#endif /* GCC_LANG_HOOKS_DEF_H */
Note: See TracBrowser for help on using the repository browser.