source: arduino-1-6-7/trunk/fuentes/arduino-ide-amd64/hardware/tools/avr/lib/gcc/avr/4.9.2/plugin/include/c-tree.h @ 4837

Last change on this file since 4837 was 4837, checked in by daduve, 3 years ago

Adding new version

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