c-lang.c revision 117395
1/* Language-specific hook definitions for C front end.
2   Copyright (C) 1991, 1995, 1997, 1998,
3   1999, 2000, 2001 Free Software Foundation, Inc.
4
5This file is part of GCC.
6
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.
11
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.
16
17You should have received a copy of the GNU General Public License
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.  */
21
22
23#include "config.h"
24#include "system.h"
25#include "tree.h"
26#include "c-tree.h"
27#include "c-common.h"
28#include "ggc.h"
29#include "langhooks.h"
30#include "langhooks-def.h"
31
32static void c_init_options PARAMS ((void));
33
34/* ### When changing hooks, consider if ObjC needs changing too!! ### */
35
36#undef LANG_HOOKS_NAME
37#define LANG_HOOKS_NAME "GNU C"
38#undef LANG_HOOKS_INIT
39#define LANG_HOOKS_INIT c_objc_common_init
40#undef LANG_HOOKS_FINISH
41#define LANG_HOOKS_FINISH c_common_finish
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_common_decode_option
46#undef LANG_HOOKS_POST_OPTIONS
47#define LANG_HOOKS_POST_OPTIONS c_common_post_options
48#undef LANG_HOOKS_GET_ALIAS_SET
49#define LANG_HOOKS_GET_ALIAS_SET c_common_get_alias_set
50#undef LANG_HOOKS_SAFE_FROM_P
51#define LANG_HOOKS_SAFE_FROM_P c_safe_from_p
52#undef LANG_HOOKS_EXPAND_EXPR
53#define LANG_HOOKS_EXPAND_EXPR c_expand_expr
54#undef LANG_HOOKS_MARK_ADDRESSABLE
55#define LANG_HOOKS_MARK_ADDRESSABLE c_mark_addressable
56#undef LANG_HOOKS_PARSE_FILE
57#define LANG_HOOKS_PARSE_FILE c_common_parse_file
58#undef LANG_HOOKS_TRUTHVALUE_CONVERSION
59#define LANG_HOOKS_TRUTHVALUE_CONVERSION c_common_truthvalue_conversion
60#undef LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES
61#define LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES c_insert_default_attributes
62#undef LANG_HOOKS_FINISH_INCOMPLETE_DECL
63#define LANG_HOOKS_FINISH_INCOMPLETE_DECL c_finish_incomplete_decl
64#undef LANG_HOOKS_UNSAFE_FOR_REEVAL
65#define LANG_HOOKS_UNSAFE_FOR_REEVAL c_common_unsafe_for_reeval
66#undef LANG_HOOKS_STATICP
67#define LANG_HOOKS_STATICP c_staticp
68#undef LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL
69#define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL c_warn_unused_global_decl
70#undef LANG_HOOKS_PRINT_IDENTIFIER
71#define LANG_HOOKS_PRINT_IDENTIFIER c_print_identifier
72#undef LANG_HOOKS_FUNCTION_ENTER_NESTED
73#define LANG_HOOKS_FUNCTION_ENTER_NESTED c_push_function_context
74#undef LANG_HOOKS_FUNCTION_LEAVE_NESTED
75#define LANG_HOOKS_FUNCTION_LEAVE_NESTED c_pop_function_context
76#undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL
77#define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL c_dup_lang_specific_decl
78
79/* Attribute hooks.  */
80#undef LANG_HOOKS_COMMON_ATTRIBUTE_TABLE
81#define LANG_HOOKS_COMMON_ATTRIBUTE_TABLE c_common_attribute_table
82#undef LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE
83#define LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE c_common_format_attribute_table
84
85#undef LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN
86#define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \
87  c_cannot_inline_tree_fn
88#undef LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS
89#define LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS \
90  c_disregard_inline_limits
91#undef LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P
92#define LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \
93  anon_aggr_type_p
94#undef LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING
95#define LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING \
96  c_convert_parm_for_inlining
97#undef LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN
98#define LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN c_dump_tree
99
100#undef LANG_HOOKS_TYPE_FOR_MODE
101#define LANG_HOOKS_TYPE_FOR_MODE c_common_type_for_mode
102#undef LANG_HOOKS_TYPE_FOR_SIZE
103#define LANG_HOOKS_TYPE_FOR_SIZE c_common_type_for_size
104#undef LANG_HOOKS_SIGNED_TYPE
105#define LANG_HOOKS_SIGNED_TYPE c_common_signed_type
106#undef LANG_HOOKS_UNSIGNED_TYPE
107#define LANG_HOOKS_UNSIGNED_TYPE c_common_unsigned_type
108#undef LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE
109#define LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE c_common_signed_or_unsigned_type
110#undef LANG_HOOKS_INCOMPLETE_TYPE_ERROR
111#define LANG_HOOKS_INCOMPLETE_TYPE_ERROR c_incomplete_type_error
112#undef LANG_HOOKS_TYPE_PROMOTES_TO
113#define LANG_HOOKS_TYPE_PROMOTES_TO c_type_promotes_to
114
115/* ### When changing hooks, consider if ObjC needs changing too!! ### */
116
117/* Each front end provides its own.  */
118const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
119
120/* Tree code classes.  */
121
122#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE,
123
124const char tree_code_type[] = {
125#include "tree.def"
126  'x',
127#include "c-common.def"
128};
129#undef DEFTREECODE
130
131/* Table indexed by tree code giving number of expression
132   operands beyond the fixed part of the node structure.
133   Not used for types or decls.  */
134
135#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH,
136
137const unsigned char tree_code_length[] = {
138#include "tree.def"
139  0,
140#include "c-common.def"
141};
142#undef DEFTREECODE
143
144/* Names of tree components.
145   Used for printing out the tree and error messages.  */
146#define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME,
147
148const char *const tree_code_name[] = {
149#include "tree.def"
150  "@@dummy",
151#include "c-common.def"
152};
153#undef DEFTREECODE
154
155static void
156c_init_options ()
157{
158  c_common_init_options (clk_c);
159}
160
161/* Used by c-lex.c, but only for objc.  */
162
163tree
164lookup_interface (arg)
165     tree arg ATTRIBUTE_UNUSED;
166{
167  return 0;
168}
169
170tree
171is_class_name (arg)
172    tree arg ATTRIBUTE_UNUSED;
173{
174  return 0;
175}
176
177tree
178objc_is_id (arg)
179    tree arg ATTRIBUTE_UNUSED;
180{
181  return 0;
182}
183
184void
185objc_check_decl (decl)
186     tree decl ATTRIBUTE_UNUSED;
187{
188}
189
190int
191objc_comptypes (lhs, rhs, reflexive)
192     tree lhs ATTRIBUTE_UNUSED;
193     tree rhs ATTRIBUTE_UNUSED;
194     int reflexive ATTRIBUTE_UNUSED;
195{
196  return -1;
197}
198
199tree
200objc_message_selector ()
201{
202  return 0;
203}
204
205/* Used by c-typeck.c (build_external_ref), but only for objc.  */
206
207tree
208lookup_objc_ivar (id)
209     tree id ATTRIBUTE_UNUSED;
210{
211  return 0;
212}
213
214void
215finish_file ()
216{
217  c_objc_common_finish_file ();
218}
219
220#include "gtype-c.h"
221