]> gcc.gnu.org Git - gcc.git/blame - gcc/c-lang.c
opts.c (find_opt): Fix to always guarantee a find of a switch with joined parameter.
[gcc.git] / gcc / c-lang.c
CommitLineData
c0f940ef 1/* Language-specific hook definitions for C front end.
517cbe13 2 Copyright (C) 1991, 1995, 1997, 1998,
21c7361e 3 1999, 2000, 2001 Free Software Foundation, Inc.
c0f940ef 4
1322177d 5This file is part of GCC.
c0f940ef 6
1322177d
LB
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.
c0f940ef 11
1322177d
LB
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.
c0f940ef
RS
16
17You should have received a copy of the GNU General Public License
1322177d
LB
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. */
c0f940ef
RS
21
22
23#include "config.h"
670ee920 24#include "system.h"
4977bab6
ZW
25#include "coretypes.h"
26#include "tm.h"
c0f940ef 27#include "tree.h"
8f17b5c5 28#include "c-tree.h"
52dabb6c 29#include "c-common.h"
e2500fed 30#include "ggc.h"
69dcadff 31#include "langhooks.h"
d23c55c2 32#include "langhooks-def.h"
a32f2771 33
2772ef3e 34static int c_init_options PARAMS ((void));
0abc6a6a
NB
35
36/* ### When changing hooks, consider if ObjC needs changing too!! ### */
cd2a3ba2 37
3ac88239
NB
38#undef LANG_HOOKS_NAME
39#define LANG_HOOKS_NAME "GNU C"
69dcadff 40#undef LANG_HOOKS_INIT
460bd0e3 41#define LANG_HOOKS_INIT c_objc_common_init
22703ccc
NB
42#undef LANG_HOOKS_FINISH
43#define LANG_HOOKS_FINISH c_common_finish
69dcadff
AO
44#undef LANG_HOOKS_INIT_OPTIONS
45#define LANG_HOOKS_INIT_OPTIONS c_init_options
2772ef3e
NB
46#undef LANG_HOOKS_HANDLE_OPTION
47#define LANG_HOOKS_HANDLE_OPTION c_common_handle_option
69dcadff 48#undef LANG_HOOKS_POST_OPTIONS
e5f3b786 49#define LANG_HOOKS_POST_OPTIONS c_common_post_options
8ac61af7
RK
50#undef LANG_HOOKS_GET_ALIAS_SET
51#define LANG_HOOKS_GET_ALIAS_SET c_common_get_alias_set
ac79cd5a
RK
52#undef LANG_HOOKS_SAFE_FROM_P
53#define LANG_HOOKS_SAFE_FROM_P c_safe_from_p
c9d892a8
NB
54#undef LANG_HOOKS_EXPAND_EXPR
55#define LANG_HOOKS_EXPAND_EXPR c_expand_expr
dffd7eb6
NB
56#undef LANG_HOOKS_MARK_ADDRESSABLE
57#define LANG_HOOKS_MARK_ADDRESSABLE c_mark_addressable
52dabb6c
NB
58#undef LANG_HOOKS_PARSE_FILE
59#define LANG_HOOKS_PARSE_FILE c_common_parse_file
78ef5b89
NB
60#undef LANG_HOOKS_TRUTHVALUE_CONVERSION
61#define LANG_HOOKS_TRUTHVALUE_CONVERSION c_common_truthvalue_conversion
7ffb4fd2
NB
62#undef LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES
63#define LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES c_insert_default_attributes
48a7a235
NB
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
db3acfa5
JM
68#undef LANG_HOOKS_STATICP
69#define LANG_HOOKS_STATICP c_staticp
ef4f94ac
RH
70#undef LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL
71#define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL c_warn_unused_global_decl
5d69f816
NB
72#undef LANG_HOOKS_PRINT_IDENTIFIER
73#define LANG_HOOKS_PRINT_IDENTIFIER c_print_identifier
b03e38e1
NB
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
63e1b1c4
NB
78#undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL
79#define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL c_dup_lang_specific_decl
8ac61af7 80
349ae713
NB
81/* Attribute hooks. */
82#undef LANG_HOOKS_COMMON_ATTRIBUTE_TABLE
83#define LANG_HOOKS_COMMON_ATTRIBUTE_TABLE c_common_attribute_table
84#undef LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE
85#define LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE c_common_format_attribute_table
86
69dcadff
AO
87#undef LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN
88#define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \
89 c_cannot_inline_tree_fn
90#undef LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS
91#define LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS \
92 c_disregard_inline_limits
93#undef LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P
94#define LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \
95 anon_aggr_type_p
f735a153
JJ
96#undef LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING
97#define LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING \
98 c_convert_parm_for_inlining
558ee214
JM
99#undef LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN
100#define LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN c_dump_tree
69dcadff 101
e72fcfe8
JH
102#undef LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION
103#define LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION c_expand_body
104
b0c48229
NB
105#undef LANG_HOOKS_TYPE_FOR_MODE
106#define LANG_HOOKS_TYPE_FOR_MODE c_common_type_for_mode
107#undef LANG_HOOKS_TYPE_FOR_SIZE
108#define LANG_HOOKS_TYPE_FOR_SIZE c_common_type_for_size
ceef8ce4
NB
109#undef LANG_HOOKS_SIGNED_TYPE
110#define LANG_HOOKS_SIGNED_TYPE c_common_signed_type
111#undef LANG_HOOKS_UNSIGNED_TYPE
112#define LANG_HOOKS_UNSIGNED_TYPE c_common_unsigned_type
113#undef LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE
114#define LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE c_common_signed_or_unsigned_type
7a228918
NB
115#undef LANG_HOOKS_INCOMPLETE_TYPE_ERROR
116#define LANG_HOOKS_INCOMPLETE_TYPE_ERROR c_incomplete_type_error
ab393bf1
NB
117#undef LANG_HOOKS_TYPE_PROMOTES_TO
118#define LANG_HOOKS_TYPE_PROMOTES_TO c_type_promotes_to
b0c48229 119
0abc6a6a
NB
120/* ### When changing hooks, consider if ObjC needs changing too!! ### */
121
cd2a3ba2 122/* Each front end provides its own. */
3ac88239 123const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
cd2a3ba2 124
2f9834e8
KG
125/* Tree code classes. */
126
127#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE,
128
129const char tree_code_type[] = {
130#include "tree.def"
131 'x',
132#include "c-common.def"
133};
134#undef DEFTREECODE
135
136/* Table indexed by tree code giving number of expression
137 operands beyond the fixed part of the node structure.
138 Not used for types or decls. */
139
140#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH,
141
142const unsigned char tree_code_length[] = {
143#include "tree.def"
144 0,
145#include "c-common.def"
146};
147#undef DEFTREECODE
148
149/* Names of tree components.
150 Used for printing out the tree and error messages. */
151#define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME,
152
153const char *const tree_code_name[] = {
154#include "tree.def"
155 "@@dummy",
156#include "c-common.def"
157};
158#undef DEFTREECODE
159
2772ef3e 160static int
ee811cfd 161c_init_options ()
b53beeb2 162{
2772ef3e 163 return c_common_init_options (clk_c);
b53beeb2
RH
164}
165
c0f940ef 166/* Used by c-lex.c, but only for objc. */
a604ca26 167
c0f940ef
RS
168tree
169lookup_interface (arg)
d6f4ec51 170 tree arg ATTRIBUTE_UNUSED;
c0f940ef
RS
171{
172 return 0;
173}
174
a604ca26
TW
175tree
176is_class_name (arg)
d6f4ec51 177 tree arg ATTRIBUTE_UNUSED;
a604ca26
TW
178{
179 return 0;
180}
181
370ce32a
ZL
182tree
183objc_is_id (arg)
184 tree arg ATTRIBUTE_UNUSED;
185{
186 return 0;
187}
188
c0f940ef 189void
0f7866e7 190objc_check_decl (decl)
d6f4ec51 191 tree decl ATTRIBUTE_UNUSED;
c0f940ef
RS
192{
193}
194
195int
0f7866e7 196objc_comptypes (lhs, rhs, reflexive)
d6f4ec51
KG
197 tree lhs ATTRIBUTE_UNUSED;
198 tree rhs ATTRIBUTE_UNUSED;
199 int reflexive ATTRIBUTE_UNUSED;
a604ca26 200{
a0825a7f 201 return -1;
a604ca26
TW
202}
203
c0f940ef 204tree
0f7866e7 205objc_message_selector ()
c0f940ef
RS
206{
207 return 0;
208}
209
7e585d16
ZW
210/* Used by c-typeck.c (build_external_ref), but only for objc. */
211
212tree
213lookup_objc_ivar (id)
214 tree id ATTRIBUTE_UNUSED;
215{
216 return 0;
217}
218
2c5f4139
JM
219void
220finish_file ()
221{
3b27886e 222 c_objc_common_finish_file ();
2c5f4139 223}
e2500fed
GK
224
225#include "gtype-c.h"
This page took 1.105694 seconds and 5 git commands to generate.