]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/c-lang.c
gcc_release (announce_snapshot): Use changedir instead of plain cd.
[thirdparty/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,
e146f815 3 1999, 2000, 2001, 2003, 2004 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"
4b780675
GDR
33#include "diagnostic.h"
34#include "c-pretty-print.h"
35
36static void c_initialize_diagnostics (diagnostic_context *);
a32f2771 37
37fa72e9 38enum c_language_kind c_language = clk_c;
0abc6a6a
NB
39
40/* ### When changing hooks, consider if ObjC needs changing too!! ### */
cd2a3ba2 41
3ac88239
NB
42#undef LANG_HOOKS_NAME
43#define LANG_HOOKS_NAME "GNU C"
69dcadff 44#undef LANG_HOOKS_INIT
460bd0e3 45#define LANG_HOOKS_INIT c_objc_common_init
22703ccc
NB
46#undef LANG_HOOKS_FINISH
47#define LANG_HOOKS_FINISH c_common_finish
69dcadff 48#undef LANG_HOOKS_INIT_OPTIONS
37fa72e9 49#define LANG_HOOKS_INIT_OPTIONS c_common_init_options
fc95cf70
GDR
50#undef LANG_HOOKS_INITIALIZE_DIAGNOSTICS
51#define LANG_HOOKS_INITIALIZE_DIAGNOSTICS c_initialize_diagnostics
2772ef3e
NB
52#undef LANG_HOOKS_HANDLE_OPTION
53#define LANG_HOOKS_HANDLE_OPTION c_common_handle_option
cb66e385
NB
54#undef LANG_HOOKS_MISSING_ARGUMENT
55#define LANG_HOOKS_MISSING_ARGUMENT c_common_missing_argument
69dcadff 56#undef LANG_HOOKS_POST_OPTIONS
e5f3b786 57#define LANG_HOOKS_POST_OPTIONS c_common_post_options
8ac61af7
RK
58#undef LANG_HOOKS_GET_ALIAS_SET
59#define LANG_HOOKS_GET_ALIAS_SET c_common_get_alias_set
ac79cd5a
RK
60#undef LANG_HOOKS_SAFE_FROM_P
61#define LANG_HOOKS_SAFE_FROM_P c_safe_from_p
c9d892a8
NB
62#undef LANG_HOOKS_EXPAND_EXPR
63#define LANG_HOOKS_EXPAND_EXPR c_expand_expr
dffd7eb6
NB
64#undef LANG_HOOKS_MARK_ADDRESSABLE
65#define LANG_HOOKS_MARK_ADDRESSABLE c_mark_addressable
52dabb6c
NB
66#undef LANG_HOOKS_PARSE_FILE
67#define LANG_HOOKS_PARSE_FILE c_common_parse_file
78ef5b89 68#undef LANG_HOOKS_TRUTHVALUE_CONVERSION
e57e265b 69#define LANG_HOOKS_TRUTHVALUE_CONVERSION c_objc_common_truthvalue_conversion
48a7a235
NB
70#undef LANG_HOOKS_FINISH_INCOMPLETE_DECL
71#define LANG_HOOKS_FINISH_INCOMPLETE_DECL c_finish_incomplete_decl
72#undef LANG_HOOKS_UNSAFE_FOR_REEVAL
73#define LANG_HOOKS_UNSAFE_FOR_REEVAL c_common_unsafe_for_reeval
db3acfa5
JM
74#undef LANG_HOOKS_STATICP
75#define LANG_HOOKS_STATICP c_staticp
26e0dcb3
GK
76#undef LANG_HOOKS_SET_DECL_ASSEMBLER_NAME
77#define LANG_HOOKS_SET_DECL_ASSEMBLER_NAME c_static_assembler_name
2896d056
ZW
78#undef LANG_HOOKS_NO_BODY_BLOCKS
79#define LANG_HOOKS_NO_BODY_BLOCKS true
ef4f94ac
RH
80#undef LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL
81#define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL c_warn_unused_global_decl
5d69f816
NB
82#undef LANG_HOOKS_PRINT_IDENTIFIER
83#define LANG_HOOKS_PRINT_IDENTIFIER c_print_identifier
b03e38e1
NB
84#undef LANG_HOOKS_FUNCTION_ENTER_NESTED
85#define LANG_HOOKS_FUNCTION_ENTER_NESTED c_push_function_context
86#undef LANG_HOOKS_FUNCTION_LEAVE_NESTED
87#define LANG_HOOKS_FUNCTION_LEAVE_NESTED c_pop_function_context
63e1b1c4
NB
88#undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL
89#define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL c_dup_lang_specific_decl
3390f9c9
AP
90#undef LANG_HOOKS_DECL_UNINIT
91#define LANG_HOOKS_DECL_UNINIT c_decl_uninit
8ac61af7 92
4985cde3
RH
93#undef LANG_HOOKS_RTL_EXPAND_STMT
94#define LANG_HOOKS_RTL_EXPAND_STMT expand_stmt
95
349ae713
NB
96/* Attribute hooks. */
97#undef LANG_HOOKS_COMMON_ATTRIBUTE_TABLE
98#define LANG_HOOKS_COMMON_ATTRIBUTE_TABLE c_common_attribute_table
99#undef LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE
100#define LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE c_common_format_attribute_table
101
69dcadff
AO
102#undef LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN
103#define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \
104 c_cannot_inline_tree_fn
105#undef LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS
106#define LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS \
107 c_disregard_inline_limits
108#undef LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P
109#define LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P \
110 anon_aggr_type_p
f735a153
JJ
111#undef LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING
112#define LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING \
113 c_convert_parm_for_inlining
084c1779
JH
114#undef LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS
115#define LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS c_estimate_num_insns
558ee214
JM
116#undef LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN
117#define LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN c_dump_tree
69dcadff 118
e72fcfe8
JH
119#undef LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION
120#define LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION c_expand_body
121
b0c48229
NB
122#undef LANG_HOOKS_TYPE_FOR_MODE
123#define LANG_HOOKS_TYPE_FOR_MODE c_common_type_for_mode
124#undef LANG_HOOKS_TYPE_FOR_SIZE
125#define LANG_HOOKS_TYPE_FOR_SIZE c_common_type_for_size
ceef8ce4
NB
126#undef LANG_HOOKS_SIGNED_TYPE
127#define LANG_HOOKS_SIGNED_TYPE c_common_signed_type
128#undef LANG_HOOKS_UNSIGNED_TYPE
129#define LANG_HOOKS_UNSIGNED_TYPE c_common_unsigned_type
130#undef LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE
131#define LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE c_common_signed_or_unsigned_type
7a228918
NB
132#undef LANG_HOOKS_INCOMPLETE_TYPE_ERROR
133#define LANG_HOOKS_INCOMPLETE_TYPE_ERROR c_incomplete_type_error
ab393bf1
NB
134#undef LANG_HOOKS_TYPE_PROMOTES_TO
135#define LANG_HOOKS_TYPE_PROMOTES_TO c_type_promotes_to
9649812a
MM
136#undef LANG_HOOKS_REGISTER_BUILTIN_TYPE
137#define LANG_HOOKS_REGISTER_BUILTIN_TYPE c_register_builtin_type
b0c48229 138
d1bd0ded
GK
139#undef LANG_HOOKS_WRITE_GLOBALS
140#define LANG_HOOKS_WRITE_GLOBALS c_write_global_declarations
141
0abc6a6a
NB
142/* ### When changing hooks, consider if ObjC needs changing too!! ### */
143
cd2a3ba2 144/* Each front end provides its own. */
3ac88239 145const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
cd2a3ba2 146
2f9834e8
KG
147/* Tree code classes. */
148
149#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE,
150
151const char tree_code_type[] = {
152#include "tree.def"
153 'x',
154#include "c-common.def"
155};
156#undef DEFTREECODE
157
158/* Table indexed by tree code giving number of expression
159 operands beyond the fixed part of the node structure.
160 Not used for types or decls. */
161
162#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH,
163
164const unsigned char tree_code_length[] = {
165#include "tree.def"
166 0,
167#include "c-common.def"
168};
169#undef DEFTREECODE
170
171/* Names of tree components.
172 Used for printing out the tree and error messages. */
173#define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME,
174
175const char *const tree_code_name[] = {
176#include "tree.def"
177 "@@dummy",
178#include "c-common.def"
179};
180#undef DEFTREECODE
181
2c5f4139 182void
3346b668 183finish_file (void)
2c5f4139 184{
3b27886e 185 c_objc_common_finish_file ();
2c5f4139 186}
e2500fed 187
4b780675
GDR
188static void
189c_initialize_diagnostics (diagnostic_context *context)
190{
191 pretty_printer *base = context->printer;
12ea3302 192 c_pretty_printer *pp = xmalloc (sizeof (c_pretty_printer));
4b780675
GDR
193 memcpy (pp_base (pp), base, sizeof (pretty_printer));
194 pp_c_pretty_printer_init (pp);
195 context->printer = (pretty_printer *) pp;
196
197 /* It is safe to free this object because it was previously malloc()'d. */
198 free (base);
199}
200
e2500fed 201#include "gtype-c.h"