]>
Commit | Line | Data |
---|---|---|
1acadd8b | 1 | /* Language-specific hook definitions for C front end. |
0b387d23 | 2 | Copyright (C) 1991, 1995, 1997, 1998, |
5e6015b1 | 3 | 1999, 2000, 2001 Free Software Foundation, Inc. |
1acadd8b | 4 | |
f12b58b3 | 5 | This file is part of GCC. |
1acadd8b | 6 | |
f12b58b3 | 7 | GCC is free software; you can redistribute it and/or modify it under |
8 | the terms of the GNU General Public License as published by the Free | |
9 | Software Foundation; either version 2, or (at your option) any later | |
10 | version. | |
1acadd8b | 11 | |
f12b58b3 | 12 | GCC is distributed in the hope that it will be useful, but WITHOUT ANY |
13 | WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 | for more details. | |
1acadd8b | 16 | |
17 | You should have received a copy of the GNU General Public License | |
f12b58b3 | 18 | along with GCC; see the file COPYING. If not, write to the Free |
19 | Software Foundation, 59 Temple Place - Suite 330, Boston, MA | |
20 | 02111-1307, USA. */ | |
1acadd8b | 21 | |
22 | ||
23 | #include "config.h" | |
405711de | 24 | #include "system.h" |
1acadd8b | 25 | #include "tree.h" |
e41f0d80 | 26 | #include "c-tree.h" |
b78207a0 | 27 | #include "c-common.h" |
e8602e56 | 28 | #include "langhooks.h" |
b0278d39 | 29 | #include "langhooks-def.h" |
811c1b69 | 30 | |
9ceb1c29 | 31 | static const char *c_init PARAMS ((const char *)); |
e486a835 | 32 | static void c_init_options PARAMS ((void)); |
78c551ad | 33 | |
34 | /* ### When changing hooks, consider if ObjC needs changing too!! ### */ | |
50c7fc99 | 35 | |
d19bd1f0 | 36 | #undef LANG_HOOKS_NAME |
37 | #define LANG_HOOKS_NAME "GNU C" | |
e8602e56 | 38 | #undef LANG_HOOKS_INIT |
39 | #define LANG_HOOKS_INIT c_init | |
cdc9fa3e | 40 | #undef LANG_HOOKS_FINISH |
41 | #define LANG_HOOKS_FINISH c_common_finish | |
e8602e56 | 42 | #undef LANG_HOOKS_INIT_OPTIONS |
43 | #define LANG_HOOKS_INIT_OPTIONS c_init_options | |
44 | #undef LANG_HOOKS_DECODE_OPTION | |
45 | #define LANG_HOOKS_DECODE_OPTION c_decode_option | |
46 | #undef LANG_HOOKS_POST_OPTIONS | |
dd436eaf | 47 | #define LANG_HOOKS_POST_OPTIONS c_common_post_options |
2a631e19 | 48 | #undef LANG_HOOKS_GET_ALIAS_SET |
49 | #define LANG_HOOKS_GET_ALIAS_SET c_common_get_alias_set | |
b3187c7c | 50 | #undef LANG_HOOKS_SAFE_FROM_P |
51 | #define LANG_HOOKS_SAFE_FROM_P c_safe_from_p | |
6d26a3ee | 52 | #undef LANG_HOOKS_MARK_TREE |
53 | #define LANG_HOOKS_MARK_TREE c_mark_tree | |
b467ecc1 | 54 | #undef LANG_HOOKS_EXPAND_EXPR |
55 | #define LANG_HOOKS_EXPAND_EXPR c_expand_expr | |
9b86eec0 | 56 | #undef LANG_HOOKS_MARK_ADDRESSABLE |
57 | #define LANG_HOOKS_MARK_ADDRESSABLE c_mark_addressable | |
b78207a0 | 58 | #undef LANG_HOOKS_PARSE_FILE |
59 | #define LANG_HOOKS_PARSE_FILE c_common_parse_file | |
aff9e656 | 60 | #undef LANG_HOOKS_TRUTHVALUE_CONVERSION |
61 | #define LANG_HOOKS_TRUTHVALUE_CONVERSION c_common_truthvalue_conversion | |
26ca6c20 | 62 | #undef LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES |
63 | #define LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES c_insert_default_attributes | |
ee23fd7b | 64 | #undef LANG_HOOKS_FINISH_INCOMPLETE_DECL |
65 | #define LANG_HOOKS_FINISH_INCOMPLETE_DECL c_finish_incomplete_decl | |
66 | #undef LANG_HOOKS_UNSAFE_FOR_REEVAL | |
67 | #define LANG_HOOKS_UNSAFE_FOR_REEVAL c_common_unsafe_for_reeval | |
ec11e38e | 68 | #undef LANG_HOOKS_STATICP |
69 | #define LANG_HOOKS_STATICP c_staticp | |
8d58a5a7 | 70 | #undef LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL |
71 | #define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL c_warn_unused_global_decl | |
b7fced5e | 72 | #undef LANG_HOOKS_PRINT_IDENTIFIER |
73 | #define LANG_HOOKS_PRINT_IDENTIFIER c_print_identifier | |
c80c4f22 | 74 | #undef LANG_HOOKS_FUNCTION_ENTER_NESTED |
75 | #define LANG_HOOKS_FUNCTION_ENTER_NESTED c_push_function_context | |
76 | #undef LANG_HOOKS_FUNCTION_LEAVE_NESTED | |
77 | #define LANG_HOOKS_FUNCTION_LEAVE_NESTED c_pop_function_context | |
78 | #undef LANG_HOOKS_FUNCTION_MARK | |
79 | #define LANG_HOOKS_FUNCTION_MARK c_mark_function_context | |
dbc42b78 | 80 | #undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL |
81 | #define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL c_dup_lang_specific_decl | |
2a631e19 | 82 | |
f8e93a2e | 83 | /* Attribute hooks. */ |
84 | #undef LANG_HOOKS_COMMON_ATTRIBUTE_TABLE | |
85 | #define LANG_HOOKS_COMMON_ATTRIBUTE_TABLE c_common_attribute_table | |
86 | #undef LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE | |
87 | #define LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE c_common_format_attribute_table | |
88 | ||
e8602e56 | 89 | #undef LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN |
90 | #define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \ | |
91 | c_cannot_inline_tree_fn | |
92 | #undef LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS | |
93 | #define LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS \ | |
94 | c_disregard_inline_limits | |
95 | #undef LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P | |
96 | #define LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \ | |
97 | anon_aggr_type_p | |
78b80426 | 98 | #undef LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING |
99 | #define LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING \ | |
100 | c_convert_parm_for_inlining | |
e8602e56 | 101 | |
771d21fa | 102 | #undef LANG_HOOKS_TYPE_FOR_MODE |
103 | #define LANG_HOOKS_TYPE_FOR_MODE c_common_type_for_mode | |
104 | #undef LANG_HOOKS_TYPE_FOR_SIZE | |
105 | #define LANG_HOOKS_TYPE_FOR_SIZE c_common_type_for_size | |
4070745f | 106 | #undef LANG_HOOKS_SIGNED_TYPE |
107 | #define LANG_HOOKS_SIGNED_TYPE c_common_signed_type | |
108 | #undef LANG_HOOKS_UNSIGNED_TYPE | |
109 | #define LANG_HOOKS_UNSIGNED_TYPE c_common_unsigned_type | |
110 | #undef LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE | |
111 | #define LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE c_common_signed_or_unsigned_type | |
1dd25100 | 112 | #undef LANG_HOOKS_INCOMPLETE_TYPE_ERROR |
113 | #define LANG_HOOKS_INCOMPLETE_TYPE_ERROR c_incomplete_type_error | |
63c62881 | 114 | #undef LANG_HOOKS_TYPE_PROMOTES_TO |
115 | #define LANG_HOOKS_TYPE_PROMOTES_TO c_type_promotes_to | |
771d21fa | 116 | |
78c551ad | 117 | /* ### When changing hooks, consider if ObjC needs changing too!! ### */ |
118 | ||
50c7fc99 | 119 | /* Each front end provides its own. */ |
d19bd1f0 | 120 | const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; |
50c7fc99 | 121 | |
ab1a776d | 122 | /* Tree code classes. */ |
123 | ||
124 | #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, | |
125 | ||
126 | const char tree_code_type[] = { | |
127 | #include "tree.def" | |
128 | 'x', | |
129 | #include "c-common.def" | |
130 | }; | |
131 | #undef DEFTREECODE | |
132 | ||
133 | /* Table indexed by tree code giving number of expression | |
134 | operands beyond the fixed part of the node structure. | |
135 | Not used for types or decls. */ | |
136 | ||
137 | #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH, | |
138 | ||
139 | const unsigned char tree_code_length[] = { | |
140 | #include "tree.def" | |
141 | 0, | |
142 | #include "c-common.def" | |
143 | }; | |
144 | #undef DEFTREECODE | |
145 | ||
146 | /* Names of tree components. | |
147 | Used for printing out the tree and error messages. */ | |
148 | #define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME, | |
149 | ||
150 | const char *const tree_code_name[] = { | |
151 | #include "tree.def" | |
152 | "@@dummy", | |
153 | #include "c-common.def" | |
154 | }; | |
155 | #undef DEFTREECODE | |
156 | ||
e486a835 | 157 | static void |
158 | c_init_options () | |
7e87204a | 159 | { |
435fb09b | 160 | c_common_init_options (clk_c); |
7e87204a | 161 | } |
162 | ||
9ceb1c29 | 163 | static const char * |
164 | c_init (filename) | |
165 | const char *filename; | |
1acadd8b | 166 | { |
4cfbaf39 | 167 | return c_objc_common_init (filename); |
1acadd8b | 168 | } |
169 | ||
1acadd8b | 170 | /* Used by c-lex.c, but only for objc. */ |
6c493ce1 | 171 | |
1acadd8b | 172 | tree |
173 | lookup_interface (arg) | |
cd03a192 | 174 | tree arg ATTRIBUTE_UNUSED; |
1acadd8b | 175 | { |
176 | return 0; | |
177 | } | |
178 | ||
6c493ce1 | 179 | tree |
180 | is_class_name (arg) | |
cd03a192 | 181 | tree arg ATTRIBUTE_UNUSED; |
6c493ce1 | 182 | { |
183 | return 0; | |
184 | } | |
185 | ||
1acadd8b | 186 | void |
187 | maybe_objc_check_decl (decl) | |
cd03a192 | 188 | tree decl ATTRIBUTE_UNUSED; |
1acadd8b | 189 | { |
190 | } | |
191 | ||
192 | int | |
6c493ce1 | 193 | maybe_objc_comptypes (lhs, rhs, reflexive) |
cd03a192 | 194 | tree lhs ATTRIBUTE_UNUSED; |
195 | tree rhs ATTRIBUTE_UNUSED; | |
196 | int reflexive ATTRIBUTE_UNUSED; | |
6c493ce1 | 197 | { |
dec2f975 | 198 | return -1; |
6c493ce1 | 199 | } |
200 | ||
1acadd8b | 201 | tree |
202 | maybe_building_objc_message_expr () | |
203 | { | |
204 | return 0; | |
205 | } | |
206 | ||
207 | int | |
208 | recognize_objc_keyword () | |
209 | { | |
210 | return 0; | |
211 | } | |
212 | ||
1beb61f9 | 213 | /* Used by c-typeck.c (build_external_ref), but only for objc. */ |
214 | ||
215 | tree | |
216 | lookup_objc_ivar (id) | |
217 | tree id ATTRIBUTE_UNUSED; | |
218 | { | |
219 | return 0; | |
220 | } | |
221 | ||
aa5ec236 | 222 | void |
223 | finish_file () | |
224 | { | |
4cfbaf39 | 225 | c_objc_common_finish_file (); |
aa5ec236 | 226 | } |