Mercurial > hg > CbC > CbC_gcc
annotate gcc/c-tree.h @ 74:f26ecf70364b
modify c-decl.c, c-parser.c, c-tree.h and tree.h
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 22 Aug 2011 03:31:39 +0900 |
parents | b81903832de2 |
children | 99e7b6776dd1 |
rev | line source |
---|---|
0 | 1 /* Definitions for C parsing and type checking. |
2 Copyright (C) 1987, 1993, 1994, 1995, 1997, 1998, | |
63
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
3 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 |
0 | 4 Free Software Foundation, Inc. |
5 | |
6 This file is part of GCC. | |
7 | |
8 GCC is free software; you can redistribute it and/or modify it under | |
9 the terms of the GNU General Public License as published by the Free | |
10 Software Foundation; either version 3, or (at your option) any later | |
11 version. | |
12 | |
13 GCC is distributed in the hope that it will be useful, but WITHOUT ANY | |
14 WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
16 for more details. | |
17 | |
18 You should have received a copy of the GNU General Public License | |
19 along with GCC; see the file COPYING3. If not see | |
20 <http://www.gnu.org/licenses/>. */ | |
21 | |
22 #ifndef GCC_C_TREE_H | |
23 #define GCC_C_TREE_H | |
24 | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
25 #include "c-family/c-common.h" |
0 | 26 #include "diagnostic.h" |
27 | |
28 /* struct lang_identifier is private to c-decl.c, but langhooks.c needs to | |
29 know how big it is. This is sanity-checked in c-decl.c. */ | |
30 #define C_SIZEOF_STRUCT_LANG_IDENTIFIER \ | |
31 (sizeof (struct c_common_identifier) + 3 * sizeof (void *)) | |
32 | |
33 /* In a RECORD_TYPE or UNION_TYPE, nonzero if any component is read-only. */ | |
34 #define C_TYPE_FIELDS_READONLY(TYPE) TREE_LANG_FLAG_1 (TYPE) | |
35 | |
36 /* In a RECORD_TYPE or UNION_TYPE, nonzero if any component is volatile. */ | |
37 #define C_TYPE_FIELDS_VOLATILE(TYPE) TREE_LANG_FLAG_2 (TYPE) | |
38 | |
39 /* In a RECORD_TYPE or UNION_TYPE or ENUMERAL_TYPE | |
40 nonzero if the definition of the type has already started. */ | |
41 #define C_TYPE_BEING_DEFINED(TYPE) TYPE_LANG_FLAG_0 (TYPE) | |
42 | |
43 /* In an incomplete RECORD_TYPE or UNION_TYPE, a list of variable | |
44 declarations whose type would be completed by completing that type. */ | |
45 #define C_TYPE_INCOMPLETE_VARS(TYPE) TYPE_VFIELD (TYPE) | |
46 | |
47 /* In an IDENTIFIER_NODE, nonzero if this identifier is actually a | |
48 keyword. C_RID_CODE (node) is then the RID_* value of the keyword, | |
49 and C_RID_YYCODE is the token number wanted by Yacc. */ | |
50 #define C_IS_RESERVED_WORD(ID) TREE_LANG_FLAG_0 (ID) | |
51 | |
52 /* Record whether a type or decl was written with nonconstant size. | |
53 Note that TYPE_SIZE may have simplified to a constant. */ | |
54 #define C_TYPE_VARIABLE_SIZE(TYPE) TYPE_LANG_FLAG_1 (TYPE) | |
55 #define C_DECL_VARIABLE_SIZE(TYPE) DECL_LANG_FLAG_0 (TYPE) | |
56 | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
57 /* Record whether a type is defined inside a struct or union type. |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
58 This is used for -Wc++-compat. */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
59 #define C_TYPE_DEFINED_IN_STRUCT(TYPE) TYPE_LANG_FLAG_2 (TYPE) |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
60 |
0 | 61 /* Record whether a typedef for type `int' was actually `signed int'. */ |
62 #define C_TYPEDEF_EXPLICITLY_SIGNED(EXP) DECL_LANG_FLAG_1 (EXP) | |
63 | |
64 /* For a FUNCTION_DECL, nonzero if it was defined without an explicit | |
65 return type. */ | |
66 #define C_FUNCTION_IMPLICIT_INT(EXP) DECL_LANG_FLAG_1 (EXP) | |
67 | |
68 /* For a FUNCTION_DECL, nonzero if it was an implicit declaration. */ | |
69 #define C_DECL_IMPLICIT(EXP) DECL_LANG_FLAG_2 (EXP) | |
70 | |
71 /* For FUNCTION_DECLs, evaluates true if the decl is built-in but has | |
72 been declared. */ | |
70
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
73 #define C_DECL_DECLARED_BUILTIN(EXP) \ |
0 | 74 DECL_LANG_FLAG_3 (FUNCTION_DECL_CHECK (EXP)) |
75 | |
76 /* For FUNCTION_DECLs, evaluates true if the decl is built-in, has a | |
77 built-in prototype and does not have a non-built-in prototype. */ | |
70
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
78 #define C_DECL_BUILTIN_PROTOTYPE(EXP) \ |
0 | 79 DECL_LANG_FLAG_6 (FUNCTION_DECL_CHECK (EXP)) |
80 | |
81 /* Record whether a decl was declared register. This is strictly a | |
82 front-end flag, whereas DECL_REGISTER is used for code generation; | |
83 they may differ for structures with volatile fields. */ | |
84 #define C_DECL_REGISTER(EXP) DECL_LANG_FLAG_4 (EXP) | |
85 | |
86 /* Record whether a decl was used in an expression anywhere except an | |
87 unevaluated operand of sizeof / typeof / alignof. This is only | |
88 used for functions declared static but not defined, though outside | |
89 sizeof and typeof it is set for other function decls as well. */ | |
90 #define C_DECL_USED(EXP) DECL_LANG_FLAG_5 (FUNCTION_DECL_CHECK (EXP)) | |
91 | |
92 /* Record whether a variable has been declared threadprivate by | |
93 #pragma omp threadprivate. */ | |
94 #define C_DECL_THREADPRIVATE_P(DECL) DECL_LANG_FLAG_3 (VAR_DECL_CHECK (DECL)) | |
95 | |
96 /* Nonzero for a decl which either doesn't exist or isn't a prototype. | |
97 N.B. Could be simplified if all built-in decls had complete prototypes | |
98 (but this is presently difficult because some of them need FILE*). */ | |
99 #define C_DECL_ISNT_PROTOTYPE(EXP) \ | |
100 (EXP == 0 \ | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
101 || (!prototype_p (TREE_TYPE (EXP)) \ |
0 | 102 && !DECL_BUILT_IN (EXP))) |
103 | |
104 /* For FUNCTION_TYPE, a hidden list of types of arguments. The same as | |
105 TYPE_ARG_TYPES for functions with prototypes, but created for functions | |
106 without prototypes. */ | |
107 #define TYPE_ACTUAL_ARG_TYPES(NODE) TYPE_LANG_SLOT_1 (NODE) | |
108 | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
109 /* For a CONSTRUCTOR, whether some initializer contains a |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
110 subexpression meaning it is not a constant expression. */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
111 #define CONSTRUCTOR_NON_CONST(EXPR) TREE_LANG_FLAG_1 (CONSTRUCTOR_CHECK (EXPR)) |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
112 |
0 | 113 /* Record parser information about an expression that is irrelevant |
114 for code generation alongside a tree representing its value. */ | |
115 struct c_expr | |
116 { | |
117 /* The value of the expression. */ | |
118 tree value; | |
119 /* Record the original unary/binary operator of an expression, which may | |
120 have been changed by fold, STRING_CST for unparenthesized string | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
121 constants, C_MAYBE_CONST_EXPR for __builtin_constant_p calls |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
122 (even if parenthesized), for subexpressions, and for non-constant |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
123 initializers, or ERROR_MARK for other expressions (including |
0 | 124 parenthesized expressions). */ |
125 enum tree_code original_code; | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
126 /* If not NULL, the original type of an expression. This will |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
127 differ from the type of the value field for an enum constant. |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
128 The type of an enum constant is a plain integer type, but this |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
129 field will be the enum type. */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
130 tree original_type; |
0 | 131 }; |
132 | |
133 /* A kind of type specifier. Note that this information is currently | |
134 only used to distinguish tag definitions, tag references and typeof | |
135 uses. */ | |
136 enum c_typespec_kind { | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
137 /* No typespec. This appears only in struct c_declspec. */ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
138 ctsk_none, |
0 | 139 /* A reserved keyword type specifier. */ |
140 ctsk_resword, | |
141 /* A reference to a tag, previously declared, such as "struct foo". | |
142 This includes where the previous declaration was as a different | |
143 kind of tag, in which case this is only valid if shadowing that | |
144 tag in an inner scope. */ | |
145 ctsk_tagref, | |
146 /* A reference to a tag, not previously declared in a visible | |
147 scope. */ | |
148 ctsk_tagfirstref, | |
149 /* A definition of a tag such as "struct foo { int a; }". */ | |
150 ctsk_tagdef, | |
151 /* A typedef name. */ | |
152 ctsk_typedef, | |
153 /* An ObjC-specific kind of type specifier. */ | |
154 ctsk_objc, | |
155 /* A typeof specifier. */ | |
156 ctsk_typeof | |
157 }; | |
158 | |
159 /* A type specifier: this structure is created in the parser and | |
160 passed to declspecs_add_type only. */ | |
161 struct c_typespec { | |
162 /* What kind of type specifier this is. */ | |
163 enum c_typespec_kind kind; | |
63
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
164 /* Whether the expression has operands suitable for use in constant |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
165 expressions. */ |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
166 bool expr_const_operands; |
0 | 167 /* The specifier itself. */ |
168 tree spec; | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
169 /* An expression to be evaluated before the type specifier, in the |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
170 case of typeof specifiers, or NULL otherwise or if no such |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
171 expression is required for a particular typeof specifier. In |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
172 particular, when typeof is applied to an expression of variably |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
173 modified type, that expression must be evaluated in order to |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
174 determine array sizes that form part of the type, but the |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
175 expression itself (as opposed to the array sizes) forms no part |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
176 of the type and so needs to be recorded separately. */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
177 tree expr; |
0 | 178 }; |
179 | |
180 /* A storage class specifier. */ | |
181 enum c_storage_class { | |
182 csc_none, | |
183 csc_auto, | |
184 csc_extern, | |
185 csc_register, | |
186 csc_static, | |
187 csc_typedef | |
188 }; | |
189 | |
190 /* A type specifier keyword "void", "_Bool", "char", "int", "float", | |
191 "double", "_Decimal32", "_Decimal64", "_Decimal128", "_Fract", "_Accum", | |
192 or none of these. */ | |
193 enum c_typespec_keyword { | |
194 cts_none, | |
195 cts_void, | |
196 cts_bool, | |
197 cts_char, | |
198 cts_int, | |
199 cts_float, | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
200 cts_int128, |
0 | 201 cts_double, |
74
f26ecf70364b
modify c-decl.c, c-parser.c, c-tree.h and tree.h
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
70
diff
changeset
|
202 #ifndef noCbC |
f26ecf70364b
modify c-decl.c, c-parser.c, c-tree.h and tree.h
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
70
diff
changeset
|
203 cts_CbC_code, |
f26ecf70364b
modify c-decl.c, c-parser.c, c-tree.h and tree.h
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
70
diff
changeset
|
204 #endif |
0 | 205 cts_dfloat32, |
206 cts_dfloat64, | |
207 cts_dfloat128, | |
208 cts_fract, | |
209 cts_accum | |
210 }; | |
211 | |
212 /* A sequence of declaration specifiers in C. */ | |
213 struct c_declspecs { | |
214 /* The type specified, if a single type specifier such as a struct, | |
215 union or enum specifier, typedef name or typeof specifies the | |
216 whole type, or NULL_TREE if none or a keyword such as "void" or | |
217 "char" is used. Does not include qualifiers. */ | |
218 tree type; | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
219 /* Any expression to be evaluated before the type, from a typeof |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
220 specifier. */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
221 tree expr; |
0 | 222 /* The attributes from a typedef decl. */ |
223 tree decl_attr; | |
224 /* When parsing, the attributes. Outside the parser, this will be | |
225 NULL; attributes (possibly from multiple lists) will be passed | |
226 separately. */ | |
227 tree attrs; | |
63
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
228 /* The storage class specifier, or csc_none if none. */ |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
229 enum c_storage_class storage_class; |
0 | 230 /* Any type specifier keyword used such as "int", not reflecting |
231 modifiers such as "short", or cts_none if none. */ | |
63
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
232 ENUM_BITFIELD (c_typespec_keyword) typespec_word : 8; |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
233 /* The kind of type specifier if one has been seen, ctsk_none |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
234 otherwise. */ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
235 ENUM_BITFIELD (c_typespec_kind) typespec_kind : 3; |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
236 /* Whether any expressions in typeof specifiers may appear in |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
237 constant expressions. */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
238 BOOL_BITFIELD expr_const_operands : 1; |
0 | 239 /* Whether any declaration specifiers have been seen at all. */ |
240 BOOL_BITFIELD declspecs_seen_p : 1; | |
241 /* Whether something other than a storage class specifier or | |
242 attribute has been seen. This is used to warn for the | |
243 obsolescent usage of storage class specifiers other than at the | |
244 start of the list. (Doing this properly would require function | |
245 specifiers to be handled separately from storage class | |
246 specifiers.) */ | |
247 BOOL_BITFIELD non_sc_seen_p : 1; | |
248 /* Whether the type is specified by a typedef or typeof name. */ | |
249 BOOL_BITFIELD typedef_p : 1; | |
250 /* Whether the type is explicitly "signed" or specified by a typedef | |
251 whose type is explicitly "signed". */ | |
252 BOOL_BITFIELD explicit_signed_p : 1; | |
253 /* Whether the specifiers include a deprecated typedef. */ | |
254 BOOL_BITFIELD deprecated_p : 1; | |
255 /* Whether the type defaulted to "int" because there were no type | |
256 specifiers. */ | |
63
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
257 BOOL_BITFIELD default_int_p : 1; |
0 | 258 /* Whether "long" was specified. */ |
259 BOOL_BITFIELD long_p : 1; | |
260 /* Whether "long" was specified more than once. */ | |
261 BOOL_BITFIELD long_long_p : 1; | |
262 /* Whether "short" was specified. */ | |
263 BOOL_BITFIELD short_p : 1; | |
264 /* Whether "signed" was specified. */ | |
265 BOOL_BITFIELD signed_p : 1; | |
266 /* Whether "unsigned" was specified. */ | |
267 BOOL_BITFIELD unsigned_p : 1; | |
268 /* Whether "complex" was specified. */ | |
269 BOOL_BITFIELD complex_p : 1; | |
270 /* Whether "inline" was specified. */ | |
271 BOOL_BITFIELD inline_p : 1; | |
272 /* Whether "__thread" was specified. */ | |
273 BOOL_BITFIELD thread_p : 1; | |
274 /* Whether "const" was specified. */ | |
275 BOOL_BITFIELD const_p : 1; | |
276 /* Whether "volatile" was specified. */ | |
277 BOOL_BITFIELD volatile_p : 1; | |
278 /* Whether "restrict" was specified. */ | |
279 BOOL_BITFIELD restrict_p : 1; | |
280 /* Whether "_Sat" was specified. */ | |
281 BOOL_BITFIELD saturating_p : 1; | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
282 /* The address space that the declaration belongs to. */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
283 addr_space_t address_space; |
0 | 284 }; |
285 | |
286 /* The various kinds of declarators in C. */ | |
287 enum c_declarator_kind { | |
288 /* An identifier. */ | |
289 cdk_id, | |
290 /* A function. */ | |
291 cdk_function, | |
292 /* An array. */ | |
293 cdk_array, | |
294 /* A pointer. */ | |
295 cdk_pointer, | |
296 /* Parenthesized declarator with nested attributes. */ | |
297 cdk_attrs | |
298 }; | |
299 | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
300 typedef struct c_arg_tag_d { |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
301 /* The argument name. */ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
302 tree id; |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
303 /* The type of the argument. */ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
304 tree type; |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
305 } c_arg_tag; |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
306 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
307 DEF_VEC_O(c_arg_tag); |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
308 DEF_VEC_ALLOC_O(c_arg_tag,gc); |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
309 |
0 | 310 /* Information about the parameters in a function declarator. */ |
311 struct c_arg_info { | |
312 /* A list of parameter decls. */ | |
313 tree parms; | |
314 /* A list of structure, union and enum tags defined. */ | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
315 VEC(c_arg_tag,gc) *tags; |
0 | 316 /* A list of argument types to go in the FUNCTION_TYPE. */ |
317 tree types; | |
318 /* A list of non-parameter decls (notably enumeration constants) | |
319 defined with the parameters. */ | |
320 tree others; | |
63
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
321 /* A VEC of VLA sizes from the parameters. In a function |
0 | 322 definition, these are used to ensure that side-effects in sizes |
323 of arrays converted to pointers (such as a parameter int i[n++]) | |
324 take place; otherwise, they are ignored. */ | |
63
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
325 VEC(tree,gc) *pending_sizes; |
0 | 326 /* True when these arguments had [*]. */ |
327 BOOL_BITFIELD had_vla_unspec : 1; | |
328 }; | |
329 | |
330 /* A declarator. */ | |
331 struct c_declarator { | |
332 /* The kind of declarator. */ | |
333 enum c_declarator_kind kind; | |
63
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
334 location_t id_loc; /* Currently only set for cdk_id, cdk_array. */ |
0 | 335 /* Except for cdk_id, the contained declarator. For cdk_id, NULL. */ |
336 struct c_declarator *declarator; | |
337 union { | |
338 /* For identifiers, an IDENTIFIER_NODE or NULL_TREE if an abstract | |
339 declarator. */ | |
340 tree id; | |
341 /* For functions. */ | |
342 struct c_arg_info *arg_info; | |
343 /* For arrays. */ | |
344 struct { | |
345 /* The array dimension, or NULL for [] and [*]. */ | |
346 tree dimen; | |
347 /* The qualifiers inside []. */ | |
348 int quals; | |
349 /* The attributes (currently ignored) inside []. */ | |
350 tree attrs; | |
351 /* Whether [static] was used. */ | |
352 BOOL_BITFIELD static_p : 1; | |
353 /* Whether [*] was used. */ | |
354 BOOL_BITFIELD vla_unspec_p : 1; | |
355 } array; | |
356 /* For pointers, the qualifiers on the pointer type. */ | |
357 int pointer_quals; | |
358 /* For attributes. */ | |
359 tree attrs; | |
360 } u; | |
361 }; | |
362 | |
363 /* A type name. */ | |
364 struct c_type_name { | |
365 /* The declaration specifiers. */ | |
366 struct c_declspecs *specs; | |
367 /* The declarator. */ | |
368 struct c_declarator *declarator; | |
369 }; | |
370 | |
371 /* A parameter. */ | |
372 struct c_parm { | |
373 /* The declaration specifiers, minus any prefix attributes. */ | |
374 struct c_declspecs *specs; | |
375 /* The attributes. */ | |
376 tree attrs; | |
377 /* The declarator. */ | |
378 struct c_declarator *declarator; | |
379 }; | |
380 | |
381 /* Used when parsing an enum. Initialized by start_enum. */ | |
382 struct c_enum_contents | |
383 { | |
384 /* While defining an enum type, this is 1 plus the last enumerator | |
385 constant value. */ | |
386 tree enum_next_value; | |
387 | |
388 /* Nonzero means that there was overflow computing enum_next_value. */ | |
389 int enum_overflow; | |
390 }; | |
391 | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
392 /* A type of reference to a static identifier in an inline |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
393 function. */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
394 enum c_inline_static_type { |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
395 /* Identifier with internal linkage used in function that may be an |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
396 inline definition (i.e., file-scope static). */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
397 csi_internal, |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
398 /* Modifiable object with static storage duration defined in |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
399 function that may be an inline definition (i.e., local |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
400 static). */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
401 csi_modifiable |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
402 }; |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
403 |
0 | 404 |
405 /* in c-parser.c */ | |
406 extern void c_parse_init (void); | |
407 | |
408 /* in c-aux-info.c */ | |
409 extern void gen_aux_info_record (tree, int, int, int); | |
410 | |
411 /* in c-decl.c */ | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
412 struct c_spot_bindings; |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
413 struct c_struct_parse_info; |
0 | 414 extern struct obstack parser_obstack; |
415 extern tree c_break_label; | |
416 extern tree c_cont_label; | |
417 | |
418 extern int global_bindings_p (void); | |
419 extern void push_scope (void); | |
420 extern tree pop_scope (void); | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
421 extern void c_bindings_start_stmt_expr (struct c_spot_bindings *); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
422 extern void c_bindings_end_stmt_expr (struct c_spot_bindings *); |
0 | 423 |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
424 extern void record_inline_static (location_t, tree, tree, |
70
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
425 enum c_inline_static_type); |
0 | 426 extern void c_init_decl_processing (void); |
427 extern void c_print_identifier (FILE *, tree, int); | |
428 extern int quals_from_declspecs (const struct c_declspecs *); | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
429 extern struct c_declarator *build_array_declarator (location_t, tree, |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
430 struct c_declspecs *, |
0 | 431 bool, bool); |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
432 extern tree build_enumerator (location_t, location_t, struct c_enum_contents *, |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
433 tree, tree); |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
434 extern tree check_for_loop_decls (location_t, bool); |
0 | 435 extern void mark_forward_parm_decls (void); |
436 extern void declare_parm_level (void); | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
437 extern void undeclared_variable (location_t, tree); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
438 extern tree lookup_label_for_goto (location_t, tree); |
0 | 439 extern tree declare_label (tree); |
440 extern tree define_label (location_t, tree); | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
441 extern struct c_spot_bindings *c_get_switch_bindings (void); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
442 extern void c_release_switch_bindings (struct c_spot_bindings *); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
443 extern bool c_check_switch_jump_warnings (struct c_spot_bindings *, |
70
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
444 location_t, location_t); |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
445 extern void finish_decl (tree, location_t, tree, tree, tree); |
0 | 446 extern tree finish_enum (tree, tree, tree); |
447 extern void finish_function (void); | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
448 extern tree finish_struct (location_t, tree, tree, tree, |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
449 struct c_struct_parse_info *); |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
450 extern struct c_arg_info *build_arg_info (void); |
0 | 451 extern struct c_arg_info *get_parm_info (bool); |
452 extern tree grokfield (location_t, struct c_declarator *, | |
70
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
453 struct c_declspecs *, tree, tree *); |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
454 extern tree groktypename (struct c_type_name *, tree *, bool *); |
0 | 455 extern tree grokparm (const struct c_parm *); |
74
f26ecf70364b
modify c-decl.c, c-parser.c, c-tree.h and tree.h
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
70
diff
changeset
|
456 |
f26ecf70364b
modify c-decl.c, c-parser.c, c-tree.h and tree.h
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
70
diff
changeset
|
457 #ifndef noCbC |
f26ecf70364b
modify c-decl.c, c-parser.c, c-tree.h and tree.h
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
70
diff
changeset
|
458 extern tree implicitly_declare (location_t, tree, int); |
f26ecf70364b
modify c-decl.c, c-parser.c, c-tree.h and tree.h
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
70
diff
changeset
|
459 #else |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
460 extern tree implicitly_declare (location_t, tree); |
74
f26ecf70364b
modify c-decl.c, c-parser.c, c-tree.h and tree.h
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
70
diff
changeset
|
461 #endif |
f26ecf70364b
modify c-decl.c, c-parser.c, c-tree.h and tree.h
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
70
diff
changeset
|
462 |
0 | 463 extern void keep_next_level (void); |
464 extern void pending_xref_error (void); | |
465 extern void c_push_function_context (void); | |
466 extern void c_pop_function_context (void); | |
467 extern void push_parm_decl (const struct c_parm *); | |
468 extern struct c_declarator *set_array_declarator_inner (struct c_declarator *, | |
70
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
469 struct c_declarator *); |
0 | 470 extern tree c_builtin_function (tree); |
471 extern tree c_builtin_function_ext_scope (tree); | |
472 extern void shadow_tag (const struct c_declspecs *); | |
473 extern void shadow_tag_warned (const struct c_declspecs *, int); | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
474 extern tree start_enum (location_t, struct c_enum_contents *, tree); |
0 | 475 extern int start_function (struct c_declspecs *, struct c_declarator *, tree); |
476 extern tree start_decl (struct c_declarator *, struct c_declspecs *, bool, | |
70
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
477 tree); |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
478 extern tree start_struct (location_t, enum tree_code, tree, |
70
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
479 struct c_struct_parse_info **); |
0 | 480 extern void store_parm_decls (void); |
481 extern void store_parm_decls_from (struct c_arg_info *); | |
482 extern tree xref_tag (enum tree_code, tree); | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
483 extern struct c_typespec parser_xref_tag (location_t, enum tree_code, tree); |
0 | 484 extern int c_expand_decl (tree); |
485 extern struct c_parm *build_c_parm (struct c_declspecs *, tree, | |
70
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
486 struct c_declarator *); |
0 | 487 extern struct c_declarator *build_attrs_declarator (tree, |
70
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
488 struct c_declarator *); |
0 | 489 extern struct c_declarator *build_function_declarator (struct c_arg_info *, |
70
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
490 struct c_declarator *); |
0 | 491 extern struct c_declarator *build_id_declarator (tree); |
492 extern struct c_declarator *make_pointer_declarator (struct c_declspecs *, | |
70
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
493 struct c_declarator *); |
0 | 494 extern struct c_declspecs *build_null_declspecs (void); |
495 extern struct c_declspecs *declspecs_add_qual (struct c_declspecs *, tree); | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
496 extern struct c_declspecs *declspecs_add_type (location_t, |
70
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
497 struct c_declspecs *, |
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
498 struct c_typespec); |
0 | 499 extern struct c_declspecs *declspecs_add_scspec (struct c_declspecs *, tree); |
500 extern struct c_declspecs *declspecs_add_attrs (struct c_declspecs *, tree); | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
501 extern struct c_declspecs *declspecs_add_addrspace (struct c_declspecs *, |
70
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
502 addr_space_t); |
0 | 503 extern struct c_declspecs *finish_declspecs (struct c_declspecs *); |
504 | |
505 /* in c-objc-common.c */ | |
506 extern bool c_objc_common_init (void); | |
507 extern bool c_missing_noreturn_ok_p (tree); | |
508 extern bool c_warn_unused_global_decl (const_tree); | |
509 extern void c_initialize_diagnostics (diagnostic_context *); | |
510 extern bool c_vla_unspec_p (tree x, tree fn); | |
511 | |
512 /* in c-typeck.c */ | |
513 extern int in_alignof; | |
514 extern int in_sizeof; | |
515 extern int in_typeof; | |
516 | |
517 extern struct c_switch *c_switch_stack; | |
518 | |
519 extern tree c_objc_common_truthvalue_conversion (location_t, tree); | |
520 extern tree require_complete_type (tree); | |
521 extern int same_translation_unit_p (const_tree, const_tree); | |
522 extern int comptypes (tree, tree); | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
523 extern int comptypes_check_different_types (tree, tree, bool *); |
0 | 524 extern bool c_vla_type_p (const_tree); |
525 extern bool c_mark_addressable (tree); | |
526 extern void c_incomplete_type_error (const_tree, const_tree); | |
527 extern tree c_type_promotes_to (tree); | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
528 extern struct c_expr default_function_array_conversion (location_t, |
63
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
529 struct c_expr); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
530 extern struct c_expr default_function_array_read_conversion (location_t, |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
531 struct c_expr); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
532 extern void mark_exp_read (tree); |
0 | 533 extern tree composite_type (tree, tree); |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
534 extern tree build_component_ref (location_t, tree, tree); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
535 extern tree build_array_ref (location_t, tree, tree); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
536 extern tree build_external_ref (location_t, tree, int, tree *); |
0 | 537 extern void pop_maybe_used (bool); |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
538 extern struct c_expr c_expr_sizeof_expr (location_t, struct c_expr); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
539 extern struct c_expr c_expr_sizeof_type (location_t, struct c_type_name *); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
540 extern struct c_expr parser_build_unary_op (location_t, enum tree_code, |
70
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
541 struct c_expr); |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
542 extern struct c_expr parser_build_binary_op (location_t, |
70
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
543 enum tree_code, struct c_expr, |
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
544 struct c_expr); |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
545 extern tree build_conditional_expr (location_t, tree, bool, tree, tree, |
70
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
546 tree, tree); |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
547 extern tree build_compound_expr (location_t, tree, tree); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
548 extern tree c_cast_expr (location_t, struct c_type_name *, tree); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
549 extern tree build_c_cast (location_t, tree, tree); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
550 extern void store_init_value (location_t, tree, tree, tree); |
0 | 551 extern void error_init (const char *); |
552 extern void pedwarn_init (location_t, int opt, const char *); | |
553 extern void maybe_warn_string_init (tree, struct c_expr); | |
554 extern void start_init (tree, tree, int); | |
555 extern void finish_init (void); | |
556 extern void really_start_incremental_init (tree); | |
63
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
557 extern void push_init_level (int, struct obstack *); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
558 extern struct c_expr pop_init_level (int, struct obstack *); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
559 extern void set_init_index (tree, tree, struct obstack *); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
560 extern void set_init_label (tree, struct obstack *); |
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
561 extern void process_init_element (struct c_expr, bool, struct obstack *); |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
562 extern tree build_compound_literal (location_t, tree, tree, bool); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
563 extern void check_compound_literal_type (location_t, struct c_type_name *); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
564 extern tree c_start_case (location_t, location_t, tree); |
0 | 565 extern void c_finish_case (tree); |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
566 extern tree build_asm_expr (location_t, tree, tree, tree, tree, tree, bool); |
0 | 567 extern tree build_asm_stmt (tree, tree); |
568 extern int c_types_compatible_p (tree, tree); | |
569 extern tree c_begin_compound_stmt (bool); | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
570 extern tree c_end_compound_stmt (location_t, tree, bool); |
0 | 571 extern void c_finish_if_stmt (location_t, tree, tree, tree, bool); |
572 extern void c_finish_loop (location_t, tree, tree, tree, tree, tree, bool); | |
573 extern tree c_begin_stmt_expr (void); | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
574 extern tree c_finish_stmt_expr (location_t, tree); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
575 extern tree c_process_expr_stmt (location_t, tree); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
576 extern tree c_finish_expr_stmt (location_t, tree); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
577 extern tree c_finish_return (location_t, tree, tree); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
578 extern tree c_finish_bc_stmt (location_t, tree *, bool); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
579 extern tree c_finish_goto_label (location_t, tree); |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
580 extern tree c_finish_goto_ptr (location_t, tree); |
0 | 581 extern tree c_expr_to_decl (tree, bool *, bool *); |
582 extern tree c_begin_omp_parallel (void); | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
583 extern tree c_finish_omp_parallel (location_t, tree, tree); |
0 | 584 extern tree c_begin_omp_task (void); |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
585 extern tree c_finish_omp_task (location_t, tree, tree); |
0 | 586 extern tree c_finish_omp_clauses (tree); |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
587 extern tree c_build_va_arg (location_t, tree, tree); |
0 | 588 |
589 /* Set to 0 at beginning of a function definition, set to 1 if | |
590 a return statement that specifies a return value is seen. */ | |
591 | |
592 extern int current_function_returns_value; | |
593 | |
594 /* Set to 0 at beginning of a function definition, set to 1 if | |
595 a return statement with no argument is seen. */ | |
596 | |
597 extern int current_function_returns_null; | |
598 | |
599 /* Set to 0 at beginning of a function definition, set to 1 if | |
600 a call to a noreturn function is seen. */ | |
601 | |
602 extern int current_function_returns_abnormally; | |
603 | |
604 /* Nonzero means we are reading code that came from a system header file. */ | |
605 | |
606 extern int system_header_p; | |
607 | |
608 /* True means global_bindings_p should return false even if the scope stack | |
609 says we are in file scope. */ | |
610 | |
611 extern bool c_override_global_bindings_to_false; | |
612 | |
613 /* In c-decl.c */ | |
614 extern void c_finish_incomplete_decl (tree); | |
615 extern void c_write_global_declarations (void); | |
616 | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
617 /* In c-errors.c */ |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
618 extern void pedwarn_c90 (location_t, int opt, const char *, ...) ATTRIBUTE_GCC_DIAG(3,4); |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
619 extern void pedwarn_c99 (location_t, int opt, const char *, ...) ATTRIBUTE_GCC_DIAG(3,4); |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
620 |
0 | 621 #endif /* ! GCC_C_TREE_H */ |