]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/c-lang.c
2002-06-04 Aldy Hernandez <aldyh@redhat.com>
[thirdparty/gcc.git] / gcc / c-lang.c
CommitLineData
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 5This file is part of GCC.
1acadd8b 6
f12b58b3 7GCC is free software; you can redistribute it and/or modify it under
8the terms of the GNU General Public License as published by the Free
9Software Foundation; either version 2, or (at your option) any later
10version.
1acadd8b 11
f12b58b3 12GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13WARRANTY; without even the implied warranty of MERCHANTABILITY or
14FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15for more details.
1acadd8b 16
17You should have received a copy of the GNU General Public License
f12b58b3 18along with GCC; see the file COPYING. If not, write to the Free
19Software Foundation, 59 Temple Place - Suite 330, Boston, MA
2002111-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 31static const char *c_init PARAMS ((const char *));
e486a835 32static 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 120const 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
126const 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
139const 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
150const char *const tree_code_name[] = {
151#include "tree.def"
152 "@@dummy",
153#include "c-common.def"
154};
155#undef DEFTREECODE
156
e486a835 157static void
158c_init_options ()
7e87204a 159{
435fb09b 160 c_common_init_options (clk_c);
7e87204a 161}
162
9ceb1c29 163static const char *
164c_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 172tree
173lookup_interface (arg)
cd03a192 174 tree arg ATTRIBUTE_UNUSED;
1acadd8b 175{
176 return 0;
177}
178
6c493ce1 179tree
180is_class_name (arg)
cd03a192 181 tree arg ATTRIBUTE_UNUSED;
6c493ce1 182{
183 return 0;
184}
185
1acadd8b 186void
187maybe_objc_check_decl (decl)
cd03a192 188 tree decl ATTRIBUTE_UNUSED;
1acadd8b 189{
190}
191
192int
6c493ce1 193maybe_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 201tree
202maybe_building_objc_message_expr ()
203{
204 return 0;
205}
206
207int
208recognize_objc_keyword ()
209{
210 return 0;
211}
212
1beb61f9 213/* Used by c-typeck.c (build_external_ref), but only for objc. */
214
215tree
216lookup_objc_ivar (id)
217 tree id ATTRIBUTE_UNUSED;
218{
219 return 0;
220}
221
aa5ec236 222void
223finish_file ()
224{
4cfbaf39 225 c_objc_common_finish_file ();
aa5ec236 226}