Mercurial > hg > CbC > CbC_gcc
annotate gcc/c-tree.h @ 90:99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 25 Dec 2011 04:04:42 +0900 |
parents | f26ecf70364b |
children |
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, |
90
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
74
diff
changeset
|
204 cts_CbC_rec, |
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
|
205 #endif |
0 | 206 cts_dfloat32, |
207 cts_dfloat64, | |
208 cts_dfloat128, | |
209 cts_fract, | |
210 cts_accum | |
211 }; | |
212 | |
213 /* A sequence of declaration specifiers in C. */ | |
214 struct c_declspecs { | |
215 /* The type specified, if a single type specifier such as a struct, | |
216 union or enum specifier, typedef name or typeof specifies the | |
217 whole type, or NULL_TREE if none or a keyword such as "void" or | |
218 "char" is used. Does not include qualifiers. */ | |
219 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
|
220 /* 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
|
221 specifier. */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
222 tree expr; |
0 | 223 /* The attributes from a typedef decl. */ |
224 tree decl_attr; | |
225 /* When parsing, the attributes. Outside the parser, this will be | |
226 NULL; attributes (possibly from multiple lists) will be passed | |
227 separately. */ | |
228 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
|
229 /* 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
|
230 enum c_storage_class storage_class; |
0 | 231 /* Any type specifier keyword used such as "int", not reflecting |
232 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
|
233 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
|
234 /* 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
|
235 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
|
236 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
|
237 /* 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
|
238 constant expressions. */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
239 BOOL_BITFIELD expr_const_operands : 1; |
0 | 240 /* Whether any declaration specifiers have been seen at all. */ |
241 BOOL_BITFIELD declspecs_seen_p : 1; | |
242 /* Whether something other than a storage class specifier or | |
243 attribute has been seen. This is used to warn for the | |
244 obsolescent usage of storage class specifiers other than at the | |
245 start of the list. (Doing this properly would require function | |
246 specifiers to be handled separately from storage class | |
247 specifiers.) */ | |
248 BOOL_BITFIELD non_sc_seen_p : 1; | |
249 /* Whether the type is specified by a typedef or typeof name. */ | |
250 BOOL_BITFIELD typedef_p : 1; | |
251 /* Whether the type is explicitly "signed" or specified by a typedef | |
252 whose type is explicitly "signed". */ | |
253 BOOL_BITFIELD explicit_signed_p : 1; | |
254 /* Whether the specifiers include a deprecated typedef. */ | |
255 BOOL_BITFIELD deprecated_p : 1; | |
256 /* Whether the type defaulted to "int" because there were no type | |
257 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
|
258 BOOL_BITFIELD default_int_p : 1; |
0 | 259 /* Whether "long" was specified. */ |
260 BOOL_BITFIELD long_p : 1; | |
261 /* Whether "long" was specified more than once. */ | |
262 BOOL_BITFIELD long_long_p : 1; | |
263 /* Whether "short" was specified. */ | |
264 BOOL_BITFIELD short_p : 1; | |
265 /* Whether "signed" was specified. */ | |
266 BOOL_BITFIELD signed_p : 1; | |
267 /* Whether "unsigned" was specified. */ | |
268 BOOL_BITFIELD unsigned_p : 1; | |
269 /* Whether "complex" was specified. */ | |
270 BOOL_BITFIELD complex_p : 1; | |
271 /* Whether "inline" was specified. */ | |
272 BOOL_BITFIELD inline_p : 1; | |
273 /* Whether "__thread" was specified. */ | |
274 BOOL_BITFIELD thread_p : 1; | |
275 /* Whether "const" was specified. */ | |
276 BOOL_BITFIELD const_p : 1; | |
277 /* Whether "volatile" was specified. */ | |
278 BOOL_BITFIELD volatile_p : 1; | |
279 /* Whether "restrict" was specified. */ | |
280 BOOL_BITFIELD restrict_p : 1; | |
281 /* Whether "_Sat" was specified. */ | |
282 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
|
283 /* 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
|
284 addr_space_t address_space; |
0 | 285 }; |
286 | |
287 /* The various kinds of declarators in C. */ | |
288 enum c_declarator_kind { | |
289 /* An identifier. */ | |
290 cdk_id, | |
291 /* A function. */ | |
292 cdk_function, | |
293 /* An array. */ | |
294 cdk_array, | |
295 /* A pointer. */ | |
296 cdk_pointer, | |
297 /* Parenthesized declarator with nested attributes. */ | |
298 cdk_attrs | |
299 }; | |
300 | |
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
|
301 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
|
302 /* 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
|
303 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
|
304 /* 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
|
305 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
|
306 } 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
|
307 |
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_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
|
309 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
|
310 |
0 | 311 /* Information about the parameters in a function declarator. */ |
312 struct c_arg_info { | |
313 /* A list of parameter decls. */ | |
314 tree parms; | |
315 /* 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
|
316 VEC(c_arg_tag,gc) *tags; |
0 | 317 /* A list of argument types to go in the FUNCTION_TYPE. */ |
318 tree types; | |
319 /* A list of non-parameter decls (notably enumeration constants) | |
320 defined with the parameters. */ | |
321 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
|
322 /* A VEC of VLA sizes from the parameters. In a function |
0 | 323 definition, these are used to ensure that side-effects in sizes |
324 of arrays converted to pointers (such as a parameter int i[n++]) | |
325 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
|
326 VEC(tree,gc) *pending_sizes; |
0 | 327 /* True when these arguments had [*]. */ |
328 BOOL_BITFIELD had_vla_unspec : 1; | |
329 }; | |
330 | |
331 /* A declarator. */ | |
332 struct c_declarator { | |
333 /* The kind of declarator. */ | |
334 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
|
335 location_t id_loc; /* Currently only set for cdk_id, cdk_array. */ |
0 | 336 /* Except for cdk_id, the contained declarator. For cdk_id, NULL. */ |
337 struct c_declarator *declarator; | |
338 union { | |
339 /* For identifiers, an IDENTIFIER_NODE or NULL_TREE if an abstract | |
340 declarator. */ | |
341 tree id; | |
342 /* For functions. */ | |
343 struct c_arg_info *arg_info; | |
344 /* For arrays. */ | |
345 struct { | |
346 /* The array dimension, or NULL for [] and [*]. */ | |
347 tree dimen; | |
348 /* The qualifiers inside []. */ | |
349 int quals; | |
350 /* The attributes (currently ignored) inside []. */ | |
351 tree attrs; | |
352 /* Whether [static] was used. */ | |
353 BOOL_BITFIELD static_p : 1; | |
354 /* Whether [*] was used. */ | |
355 BOOL_BITFIELD vla_unspec_p : 1; | |
356 } array; | |
357 /* For pointers, the qualifiers on the pointer type. */ | |
358 int pointer_quals; | |
359 /* For attributes. */ | |
360 tree attrs; | |
361 } u; | |
362 }; | |
363 | |
364 /* A type name. */ | |
365 struct c_type_name { | |
366 /* The declaration specifiers. */ | |
367 struct c_declspecs *specs; | |
368 /* The declarator. */ | |
369 struct c_declarator *declarator; | |
370 }; | |
371 | |
372 /* A parameter. */ | |
373 struct c_parm { | |
374 /* The declaration specifiers, minus any prefix attributes. */ | |
375 struct c_declspecs *specs; | |
376 /* The attributes. */ | |
377 tree attrs; | |
378 /* The declarator. */ | |
379 struct c_declarator *declarator; | |
380 }; | |
381 | |
382 /* Used when parsing an enum. Initialized by start_enum. */ | |
383 struct c_enum_contents | |
384 { | |
385 /* While defining an enum type, this is 1 plus the last enumerator | |
386 constant value. */ | |
387 tree enum_next_value; | |
388 | |
389 /* Nonzero means that there was overflow computing enum_next_value. */ | |
390 int enum_overflow; | |
391 }; | |
392 | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
393 /* 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
|
394 function. */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
395 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
|
396 /* 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
|
397 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
|
398 csi_internal, |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
399 /* 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
|
400 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
|
401 static). */ |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
402 csi_modifiable |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
403 }; |
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
404 |
0 | 405 |
406 /* in c-parser.c */ | |
407 extern void c_parse_init (void); | |
408 | |
409 /* in c-aux-info.c */ | |
410 extern void gen_aux_info_record (tree, int, int, int); | |
411 | |
412 /* 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
|
413 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
|
414 struct c_struct_parse_info; |
0 | 415 extern struct obstack parser_obstack; |
416 extern tree c_break_label; | |
417 extern tree c_cont_label; | |
418 | |
419 extern int global_bindings_p (void); | |
420 extern void push_scope (void); | |
421 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
|
422 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
|
423 extern void c_bindings_end_stmt_expr (struct c_spot_bindings *); |
0 | 424 |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
425 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
|
426 enum c_inline_static_type); |
0 | 427 extern void c_init_decl_processing (void); |
428 extern void c_print_identifier (FILE *, tree, int); | |
429 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
|
430 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
|
431 struct c_declspecs *, |
0 | 432 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
|
433 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
|
434 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
|
435 extern tree check_for_loop_decls (location_t, bool); |
0 | 436 extern void mark_forward_parm_decls (void); |
437 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
|
438 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
|
439 extern tree lookup_label_for_goto (location_t, tree); |
0 | 440 extern tree declare_label (tree); |
441 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
|
442 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
|
443 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
|
444 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
|
445 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
|
446 extern void finish_decl (tree, location_t, tree, tree, tree); |
0 | 447 extern tree finish_enum (tree, tree, tree); |
448 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
|
449 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
|
450 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
|
451 extern struct c_arg_info *build_arg_info (void); |
0 | 452 extern struct c_arg_info *get_parm_info (bool); |
453 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
|
454 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
|
455 extern tree groktypename (struct c_type_name *, tree *, bool *); |
0 | 456 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
|
457 |
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 #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
|
459 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
|
460 #else |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
461 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
|
462 #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
|
463 |
0 | 464 extern void keep_next_level (void); |
465 extern void pending_xref_error (void); | |
466 extern void c_push_function_context (void); | |
467 extern void c_pop_function_context (void); | |
468 extern void push_parm_decl (const struct c_parm *); | |
469 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
|
470 struct c_declarator *); |
0 | 471 extern tree c_builtin_function (tree); |
472 extern tree c_builtin_function_ext_scope (tree); | |
473 extern void shadow_tag (const struct c_declspecs *); | |
474 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
|
475 extern tree start_enum (location_t, struct c_enum_contents *, tree); |
0 | 476 extern int start_function (struct c_declspecs *, struct c_declarator *, tree); |
477 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
|
478 tree); |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
479 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
|
480 struct c_struct_parse_info **); |
0 | 481 extern void store_parm_decls (void); |
482 extern void store_parm_decls_from (struct c_arg_info *); | |
483 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
|
484 extern struct c_typespec parser_xref_tag (location_t, enum tree_code, tree); |
0 | 485 extern int c_expand_decl (tree); |
486 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
|
487 struct c_declarator *); |
0 | 488 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
|
489 struct c_declarator *); |
0 | 490 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
|
491 struct c_declarator *); |
0 | 492 extern struct c_declarator *build_id_declarator (tree); |
493 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
|
494 struct c_declarator *); |
0 | 495 extern struct c_declspecs *build_null_declspecs (void); |
496 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
|
497 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
|
498 struct c_declspecs *, |
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
499 struct c_typespec); |
0 | 500 extern struct c_declspecs *declspecs_add_scspec (struct c_declspecs *, tree); |
501 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
|
502 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
|
503 addr_space_t); |
0 | 504 extern struct c_declspecs *finish_declspecs (struct c_declspecs *); |
505 | |
506 /* in c-objc-common.c */ | |
507 extern bool c_objc_common_init (void); | |
508 extern bool c_missing_noreturn_ok_p (tree); | |
509 extern bool c_warn_unused_global_decl (const_tree); | |
510 extern void c_initialize_diagnostics (diagnostic_context *); | |
511 extern bool c_vla_unspec_p (tree x, tree fn); | |
512 | |
513 /* in c-typeck.c */ | |
514 extern int in_alignof; | |
515 extern int in_sizeof; | |
516 extern int in_typeof; | |
517 | |
518 extern struct c_switch *c_switch_stack; | |
519 | |
520 extern tree c_objc_common_truthvalue_conversion (location_t, tree); | |
521 extern tree require_complete_type (tree); | |
522 extern int same_translation_unit_p (const_tree, const_tree); | |
523 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
|
524 extern int comptypes_check_different_types (tree, tree, bool *); |
0 | 525 extern bool c_vla_type_p (const_tree); |
526 extern bool c_mark_addressable (tree); | |
527 extern void c_incomplete_type_error (const_tree, const_tree); | |
528 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
|
529 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
|
530 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
|
531 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
|
532 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
|
533 extern void mark_exp_read (tree); |
0 | 534 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
|
535 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
|
536 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
|
537 extern tree build_external_ref (location_t, tree, int, tree *); |
0 | 538 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
|
539 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
|
540 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
|
541 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
|
542 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
|
543 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
|
544 enum tree_code, struct c_expr, |
b81903832de2
merge c-decl.c
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
69
diff
changeset
|
545 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
|
546 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
|
547 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
|
548 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
|
549 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
|
550 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
|
551 extern void store_init_value (location_t, tree, tree, tree); |
0 | 552 extern void error_init (const char *); |
553 extern void pedwarn_init (location_t, int opt, const char *); | |
554 extern void maybe_warn_string_init (tree, struct c_expr); | |
555 extern void start_init (tree, tree, int); | |
556 extern void finish_init (void); | |
557 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
|
558 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
|
559 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
|
560 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
|
561 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
|
562 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
|
563 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
|
564 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
|
565 extern tree c_start_case (location_t, location_t, tree); |
0 | 566 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
|
567 extern tree build_asm_expr (location_t, tree, tree, tree, tree, tree, bool); |
0 | 568 extern tree build_asm_stmt (tree, tree); |
569 extern int c_types_compatible_p (tree, tree); | |
570 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
|
571 extern tree c_end_compound_stmt (location_t, tree, bool); |
0 | 572 extern void c_finish_if_stmt (location_t, tree, tree, tree, bool); |
573 extern void c_finish_loop (location_t, tree, tree, tree, tree, tree, bool); | |
574 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
|
575 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
|
576 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
|
577 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
|
578 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
|
579 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
|
580 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
|
581 extern tree c_finish_goto_ptr (location_t, tree); |
0 | 582 extern tree c_expr_to_decl (tree, bool *, bool *); |
583 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
|
584 extern tree c_finish_omp_parallel (location_t, tree, tree); |
0 | 585 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
|
586 extern tree c_finish_omp_task (location_t, tree, tree); |
0 | 587 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
|
588 extern tree c_build_va_arg (location_t, tree, tree); |
0 | 589 |
590 /* Set to 0 at beginning of a function definition, set to 1 if | |
591 a return statement that specifies a return value is seen. */ | |
592 | |
593 extern int current_function_returns_value; | |
594 | |
595 /* Set to 0 at beginning of a function definition, set to 1 if | |
596 a return statement with no argument is seen. */ | |
597 | |
598 extern int current_function_returns_null; | |
599 | |
600 /* Set to 0 at beginning of a function definition, set to 1 if | |
601 a call to a noreturn function is seen. */ | |
602 | |
603 extern int current_function_returns_abnormally; | |
604 | |
605 /* Nonzero means we are reading code that came from a system header file. */ | |
606 | |
607 extern int system_header_p; | |
608 | |
609 /* True means global_bindings_p should return false even if the scope stack | |
610 says we are in file scope. */ | |
611 | |
612 extern bool c_override_global_bindings_to_false; | |
613 | |
614 /* In c-decl.c */ | |
615 extern void c_finish_incomplete_decl (tree); | |
616 extern void c_write_global_declarations (void); | |
617 | |
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
|
618 /* 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
|
619 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
|
620 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
|
621 |
0 | 622 #endif /* ! GCC_C_TREE_H */ |