00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef GCC_C_COMMON_H
00026 #define GCC_C_COMMON_H
00027
00028 #include "splay-tree.h"
00029 #include "cpplib.h"
00030 #include "ggc.h"
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 enum rid
00052 {
00053
00054
00055 RID_STATIC = 0,
00056 RID_UNSIGNED, RID_LONG, RID_CONST, RID_EXTERN,
00057 RID_REGISTER, RID_TYPEDEF, RID_SHORT, RID_INLINE,
00058 RID_VOLATILE, RID_SIGNED, RID_AUTO, RID_RESTRICT,
00059
00060
00061 RID_COMPLEX, RID_THREAD,
00062
00063
00064 RID_FRIEND, RID_VIRTUAL, RID_EXPLICIT, RID_EXPORT, RID_MUTABLE,
00065
00066
00067 RID_IN, RID_OUT, RID_INOUT, RID_BYCOPY, RID_BYREF, RID_ONEWAY,
00068
00069
00070 RID_INT, RID_CHAR, RID_FLOAT, RID_DOUBLE, RID_VOID,
00071 RID_ENUM, RID_STRUCT, RID_UNION, RID_IF, RID_ELSE,
00072 RID_WHILE, RID_DO, RID_FOR, RID_SWITCH, RID_CASE,
00073 RID_DEFAULT, RID_BREAK, RID_CONTINUE, RID_RETURN, RID_GOTO,
00074 RID_SIZEOF,
00075
00076
00077 RID_ASM, RID_TYPEOF, RID_ALIGNOF, RID_ATTRIBUTE, RID_VA_ARG,
00078 RID_EXTENSION, RID_IMAGPART, RID_REALPART, RID_LABEL, RID_CHOOSE_EXPR,
00079 RID_TYPES_COMPATIBLE_P,
00080
00081
00082 RID_FUNCTION_NAME, RID_PRETTY_FUNCTION_NAME, RID_C99_FUNCTION_NAME,
00083
00084
00085 RID_BOOL, RID_WCHAR, RID_CLASS,
00086 RID_PUBLIC, RID_PRIVATE, RID_PROTECTED,
00087 RID_TEMPLATE, RID_NULL, RID_CATCH,
00088 RID_DELETE, RID_FALSE, RID_NAMESPACE,
00089 RID_NEW, RID_OFFSETOF, RID_OPERATOR,
00090 RID_THIS, RID_THROW, RID_TRUE,
00091 RID_TRY, RID_TYPENAME, RID_TYPEID,
00092 RID_USING,
00093
00094
00095 RID_CONSTCAST, RID_DYNCAST, RID_REINTCAST, RID_STATCAST,
00096
00097
00098 RID_AT_ENCODE, RID_AT_END,
00099 RID_AT_CLASS, RID_AT_ALIAS, RID_AT_DEFS,
00100 RID_AT_PRIVATE, RID_AT_PROTECTED, RID_AT_PUBLIC,
00101 RID_AT_PROTOCOL, RID_AT_SELECTOR,
00102 RID_AT_THROW, RID_AT_TRY, RID_AT_CATCH,
00103 RID_AT_FINALLY, RID_AT_SYNCHRONIZED,
00104 RID_AT_INTERFACE,
00105 RID_AT_IMPLEMENTATION,
00106
00107 RID_MAX,
00108
00109 RID_FIRST_MODIFIER = RID_STATIC,
00110 RID_LAST_MODIFIER = RID_ONEWAY,
00111
00112 RID_FIRST_AT = RID_AT_ENCODE,
00113 RID_LAST_AT = RID_AT_IMPLEMENTATION,
00114 RID_FIRST_PQ = RID_IN,
00115 RID_LAST_PQ = RID_ONEWAY
00116 };
00117
00118 #define OBJC_IS_AT_KEYWORD(rid) \
00119 ((unsigned int) (rid) >= (unsigned int) RID_FIRST_AT && \
00120 (unsigned int) (rid) <= (unsigned int) RID_LAST_AT)
00121
00122 #define OBJC_IS_PQ_KEYWORD(rid) \
00123 ((unsigned int) (rid) >= (unsigned int) RID_FIRST_PQ && \
00124 (unsigned int) (rid) <= (unsigned int) RID_LAST_PQ)
00125
00126
00127
00128 extern GTY ((length ("(int) RID_MAX"))) tree *ridpointers;
00129
00130
00131
00132 enum c_tree_index
00133 {
00134 CTI_WCHAR_TYPE,
00135 CTI_SIGNED_WCHAR_TYPE,
00136 CTI_UNSIGNED_WCHAR_TYPE,
00137 CTI_WINT_TYPE,
00138 CTI_SIGNED_SIZE_TYPE,
00139 CTI_UNSIGNED_PTRDIFF_TYPE,
00140 CTI_INTMAX_TYPE,
00141 CTI_UINTMAX_TYPE,
00142 CTI_WIDEST_INT_LIT_TYPE,
00143 CTI_WIDEST_UINT_LIT_TYPE,
00144
00145 CTI_CHAR_ARRAY_TYPE,
00146 CTI_WCHAR_ARRAY_TYPE,
00147 CTI_INT_ARRAY_TYPE,
00148 CTI_STRING_TYPE,
00149 CTI_CONST_STRING_TYPE,
00150
00151
00152 CTI_TRUTHVALUE_TYPE,
00153 CTI_TRUTHVALUE_TRUE,
00154 CTI_TRUTHVALUE_FALSE,
00155
00156 CTI_DEFAULT_FUNCTION_TYPE,
00157
00158
00159 CTI_FUNCTION_NAME_DECL,
00160 CTI_PRETTY_FUNCTION_NAME_DECL,
00161 CTI_C99_FUNCTION_NAME_DECL,
00162 CTI_SAVED_FUNCTION_NAME_DECLS,
00163
00164 CTI_VOID_ZERO,
00165
00166 CTI_NULL,
00167
00168 CTI_MAX
00169 };
00170
00171 #define C_RID_CODE(id) (((struct c_common_identifier *) (id))->node.rid_code)
00172
00173
00174
00175 struct c_common_identifier GTY(())
00176 {
00177 struct tree_common common;
00178 struct cpp_hashnode node;
00179 };
00180
00181 #define wchar_type_node c_global_trees[CTI_WCHAR_TYPE]
00182 #define signed_wchar_type_node c_global_trees[CTI_SIGNED_WCHAR_TYPE]
00183 #define unsigned_wchar_type_node c_global_trees[CTI_UNSIGNED_WCHAR_TYPE]
00184 #define wint_type_node c_global_trees[CTI_WINT_TYPE]
00185 #define signed_size_type_node c_global_trees[CTI_SIGNED_SIZE_TYPE]
00186 #define unsigned_ptrdiff_type_node c_global_trees[CTI_UNSIGNED_PTRDIFF_TYPE]
00187 #define intmax_type_node c_global_trees[CTI_INTMAX_TYPE]
00188 #define uintmax_type_node c_global_trees[CTI_UINTMAX_TYPE]
00189 #define widest_integer_literal_type_node c_global_trees[CTI_WIDEST_INT_LIT_TYPE]
00190 #define widest_unsigned_literal_type_node c_global_trees[CTI_WIDEST_UINT_LIT_TYPE]
00191
00192 #define truthvalue_type_node c_global_trees[CTI_TRUTHVALUE_TYPE]
00193 #define truthvalue_true_node c_global_trees[CTI_TRUTHVALUE_TRUE]
00194 #define truthvalue_false_node c_global_trees[CTI_TRUTHVALUE_FALSE]
00195
00196 #define char_array_type_node c_global_trees[CTI_CHAR_ARRAY_TYPE]
00197 #define wchar_array_type_node c_global_trees[CTI_WCHAR_ARRAY_TYPE]
00198 #define int_array_type_node c_global_trees[CTI_INT_ARRAY_TYPE]
00199 #define string_type_node c_global_trees[CTI_STRING_TYPE]
00200 #define const_string_type_node c_global_trees[CTI_CONST_STRING_TYPE]
00201
00202 #define default_function_type c_global_trees[CTI_DEFAULT_FUNCTION_TYPE]
00203
00204 #define function_name_decl_node c_global_trees[CTI_FUNCTION_NAME_DECL]
00205 #define pretty_function_name_decl_node c_global_trees[CTI_PRETTY_FUNCTION_NAME_DECL]
00206 #define c99_function_name_decl_node c_global_trees[CTI_C99_FUNCTION_NAME_DECL]
00207 #define saved_function_name_decls c_global_trees[CTI_SAVED_FUNCTION_NAME_DECLS]
00208
00209
00210 #define void_zero_node c_global_trees[CTI_VOID_ZERO]
00211
00212
00213 #define null_node c_global_trees[CTI_NULL]
00214
00215 extern GTY(()) tree c_global_trees[CTI_MAX];
00216
00217
00218
00219 struct sorted_fields_type GTY(())
00220 {
00221 int len;
00222 tree GTY((length ("%h.len"))) elts[1];
00223 };
00224
00225
00226
00227 #define C_DECLARED_LABEL_FLAG(label) TREE_LANG_FLAG_1 (label)
00228
00229
00230
00231 #define C_ARTIFICIAL_STRING_P(NODE) TREE_LANG_FLAG_0 (NODE)
00232
00233 typedef enum c_language_kind
00234 {
00235 clk_c = 0,
00236 clk_objc = 1,
00237 clk_cxx = 2,
00238 clk_objcxx = 3
00239 }
00240 c_language_kind;
00241
00242
00243
00244 extern c_language_kind c_language;
00245
00246 #define c_dialect_cxx() (c_language & clk_cxx)
00247 #define c_dialect_objc() (c_language & clk_objc)
00248
00249
00250
00251 struct stmt_tree_s GTY(()) {
00252
00253 tree x_cur_stmt_list;
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269 int stmts_are_full_exprs_p;
00270 };
00271
00272 #ifdef KEY
00273
00274
00275
00276
00277
00278 #define RECHAIN_STMTS(substmt) \
00279 do { \
00280 tree_stmt_iterator i = tsi_last(cur_stmt_list); \
00281 if (!tsi_end_p(i)) { \
00282 tree last_stmt = tsi_stmt(i); \
00283 if (substmt == last_stmt) \
00284 tsi_delink(&i); \
00285 } \
00286 } while (0)
00287 #endif
00288
00289 typedef struct stmt_tree_s *stmt_tree;
00290
00291
00292
00293
00294 struct c_language_function GTY(()) {
00295
00296
00297 struct stmt_tree_s x_stmt_tree;
00298 };
00299
00300
00301
00302
00303
00304 #define cur_stmt_list (current_stmt_tree ()->x_cur_stmt_list)
00305
00306
00307
00308
00309
00310 extern int (*lang_missing_noreturn_ok_p) (tree);
00311
00312
00313
00314 extern void (*lang_post_pch_load) (void);
00315
00316 extern void push_file_scope (void);
00317 extern void pop_file_scope (void);
00318 extern int yyparse (void);
00319 extern stmt_tree current_stmt_tree (void);
00320 extern tree push_stmt_list (void);
00321 extern tree pop_stmt_list (tree);
00322 extern tree add_stmt (tree);
00323 extern void push_cleanup (tree, tree, bool);
00324
00325 extern int c_expand_decl (tree);
00326
00327 extern int field_decl_cmp (const void *, const void *);
00328 extern void resort_sorted_fields (void *, void *, gt_pointer_operator,
00329 void *);
00330 extern bool has_c_linkage (tree decl);
00331
00332
00333
00334
00335
00336 extern int flag_preprocess_only;
00337
00338
00339
00340
00341 extern int flag_nil_receivers;
00342
00343
00344
00345 extern int flag_objc_exceptions;
00346
00347
00348 extern int flag_objc_sjlj_exceptions;
00349
00350
00351
00352
00353 extern int flag_zero_link;
00354
00355
00356
00357
00358 extern int flag_replace_objc_classes;
00359
00360
00361
00362 extern char flag_no_line_commands;
00363
00364
00365
00366
00367 extern char flag_no_output;
00368
00369
00370
00371
00372 extern char flag_dump_macros;
00373
00374
00375
00376 extern char flag_dump_includes;
00377
00378
00379
00380 extern bool flag_pch_preprocess;
00381
00382
00383
00384
00385 extern const char *pch_file;
00386
00387
00388
00389
00390 extern int flag_iso;
00391
00392
00393
00394
00395 extern int flag_undef;
00396
00397
00398
00399 extern int flag_no_builtin;
00400
00401
00402
00403
00404 extern int flag_no_nonansi_builtin;
00405
00406
00407
00408 extern int flag_short_double;
00409
00410
00411
00412 extern int flag_short_wchar;
00413
00414
00415 extern int flag_ms_extensions;
00416
00417
00418
00419 extern int flag_no_asm;
00420
00421
00422
00423
00424 extern int flag_const_strings;
00425
00426
00427
00428 extern int flag_signed_bitfields;
00429
00430
00431
00432
00433 extern int warn_write_strings;
00434
00435
00436
00437 extern int warn_unknown_pragmas;
00438
00439
00440
00441
00442 extern int warn_format;
00443
00444
00445
00446
00447
00448
00449
00450
00451 extern int flag_cond_mismatch;
00452
00453
00454
00455 extern int flag_isoc94;
00456
00457
00458
00459 extern int flag_isoc99;
00460
00461
00462
00463 extern int flag_hosted;
00464
00465
00466
00467 extern int warn_main;
00468
00469
00470
00471
00472
00473
00474
00475
00476 extern int flag_gen_declaration;
00477
00478
00479
00480 extern int flag_next_runtime;
00481
00482
00483
00484
00485
00486 extern int print_struct_values;
00487
00488
00489
00490 extern const char *constant_string_class_name;
00491
00492
00493
00494
00495
00496
00497
00498 extern int flag_no_gnu_keywords;
00499
00500
00501
00502
00503 extern int flag_implement_inlines;
00504
00505
00506
00507 extern int flag_implicit_templates;
00508
00509
00510
00511
00512
00513 extern int flag_implicit_inline_templates;
00514
00515
00516
00517
00518 extern int flag_use_repository;
00519
00520
00521
00522
00523 extern int flag_optional_diags;
00524
00525
00526
00527 extern int flag_elide_constructors;
00528
00529
00530
00531
00532 extern int flag_default_inline;
00533
00534
00535
00536
00537 extern int flag_rtti;
00538
00539
00540
00541
00542
00543
00544 extern int flag_conserve_space;
00545
00546
00547
00548 extern int flag_access_control;
00549
00550
00551
00552
00553 extern int flag_check_new;
00554
00555
00556
00557
00558
00559
00560
00561
00562 extern int flag_new_for_scope;
00563
00564
00565
00566
00567
00568 extern int flag_weak;
00569
00570
00571
00572
00573
00574
00575 extern int flag_working_directory;
00576
00577
00578
00579
00580 extern int flag_use_cxa_atexit;
00581
00582
00583
00584
00585 extern int flag_permissive;
00586
00587
00588
00589
00590
00591
00592 extern int flag_enforce_eh_specs;
00593
00594
00595
00596
00597 extern int flag_threadsafe_statics;
00598
00599
00600
00601 extern int warn_implicit;
00602
00603
00604
00605
00606
00607 extern int warn_strict_null_sentinel;
00608
00609
00610
00611
00612
00613 extern int max_tinst_depth;
00614
00615
00616
00617
00618 extern int skip_evaluation;
00619
00620
00621
00622 #define C_TYPE_OBJECT_P(type) \
00623 (TREE_CODE (type) != FUNCTION_TYPE && TYPE_SIZE (type))
00624
00625 #define C_TYPE_INCOMPLETE_P(type) \
00626 (TREE_CODE (type) != FUNCTION_TYPE && TYPE_SIZE (type) == 0)
00627
00628 #define C_TYPE_FUNCTION_P(type) \
00629 (TREE_CODE (type) == FUNCTION_TYPE)
00630
00631
00632
00633 #define C_TYPE_OBJECT_OR_INCOMPLETE_P(type) \
00634 (!C_TYPE_FUNCTION_P (type))
00635
00636
00637 extern const struct attribute_spec c_common_attribute_table[];
00638 extern const struct attribute_spec c_common_format_attribute_table[];
00639
00640
00641
00642
00643
00644
00645 extern tree (*make_fname_decl) (tree, int);
00646
00647 extern tree identifier_global_value (tree);
00648 extern void record_builtin_type (enum rid, const char *, tree);
00649 extern tree build_void_list_node (void);
00650 extern void start_fname_decls (void);
00651 extern void finish_fname_decls (void);
00652 extern const char *fname_as_string (int);
00653 extern tree fname_decl (unsigned, tree);
00654
00655 extern void check_function_arguments (tree, tree, tree);
00656 extern void check_function_arguments_recurse (void (*)
00657 (void *, tree,
00658 unsigned HOST_WIDE_INT),
00659 void *, tree,
00660 unsigned HOST_WIDE_INT);
00661 extern void check_function_format (tree, tree);
00662 extern void set_Wformat (int);
00663 extern tree handle_format_attribute (tree *, tree, tree, int, bool *);
00664 extern tree handle_format_arg_attribute (tree *, tree, tree, int, bool *);
00665 extern int c_common_handle_option (size_t code, const char *arg, int value);
00666 extern bool c_common_missing_argument (const char *opt, size_t code);
00667 extern tree c_common_type_for_mode (enum machine_mode, int);
00668 extern tree c_common_type_for_size (unsigned int, int);
00669 extern tree c_common_unsigned_type (tree);
00670 extern tree c_common_signed_type (tree);
00671 extern tree c_common_signed_or_unsigned_type (int, tree);
00672 extern tree c_common_truthvalue_conversion (tree);
00673 extern void c_apply_type_quals_to_decl (int, tree);
00674 extern tree c_sizeof_or_alignof_type (tree, enum tree_code, int);
00675 extern tree c_alignof_expr (tree);
00676
00677
00678 extern void binary_op_error (enum tree_code);
00679 extern tree fix_string_type (tree);
00680 struct varray_head_tag;
00681 extern void constant_expression_warning (tree);
00682 extern tree convert_and_check (tree, tree);
00683 extern void overflow_warning (tree);
00684 extern void unsigned_conversion_warning (tree, tree);
00685 extern bool c_determine_visibility (tree);
00686 extern bool same_scalar_type_ignoring_signedness (tree, tree);
00687
00688 #define c_sizeof(T) c_sizeof_or_alignof_type (T, SIZEOF_EXPR, 1)
00689 #define c_alignof(T) c_sizeof_or_alignof_type (T, ALIGNOF_EXPR, 1)
00690
00691
00692
00693
00694 extern tree shorten_compare (tree *, tree *, tree *, enum tree_code *);
00695
00696 extern tree pointer_int_sum (enum tree_code, tree, tree);
00697 extern unsigned int min_precision (tree, int);
00698
00699
00700 extern tree c_build_qualified_type (tree, int);
00701
00702
00703
00704 extern void c_common_nodes_and_builtins (void);
00705
00706 extern void set_builtin_user_assembler_name (tree decl, const char *asmspec);
00707
00708 extern void disable_builtin_function (const char *);
00709
00710 extern tree build_va_arg (tree, tree);
00711
00712 extern unsigned int c_common_init_options (unsigned int, const char **);
00713 extern bool c_common_post_options (const char **);
00714 extern bool c_common_init (void);
00715 extern void c_common_finish (void);
00716 extern void c_common_parse_file (int);
00717 extern HOST_WIDE_INT c_common_get_alias_set (tree);
00718 extern void c_register_builtin_type (tree, const char*);
00719 extern bool c_promoting_integer_type_p (tree);
00720 extern int self_promoting_args_p (tree);
00721 extern tree strip_array_types (tree);
00722 extern tree strip_pointer_operator (tree);
00723 extern HOST_WIDE_INT c_common_to_target_charset (HOST_WIDE_INT);
00724
00725
00726 extern void c_parse_file (void);
00727
00728 extern void finish_file (void);
00729
00730
00731
00732
00733
00734
00735
00736
00737 #define STMT_IS_FULL_EXPR_P(NODE) TREE_LANG_FLAG_1 ((NODE))
00738
00739
00740
00741 #define STATEMENT_LIST_STMT_EXPR(NODE) \
00742 TREE_LANG_FLAG_1 (STATEMENT_LIST_CHECK (NODE))
00743
00744
00745 #define STATEMENT_LIST_HAS_LABEL(NODE) \
00746 TREE_LANG_FLAG_3 (STATEMENT_LIST_CHECK (NODE))
00747
00748
00749
00750 #define WHILE_COND(NODE) TREE_OPERAND (WHILE_STMT_CHECK (NODE), 0)
00751 #define WHILE_BODY(NODE) TREE_OPERAND (WHILE_STMT_CHECK (NODE), 1)
00752
00753
00754
00755 #define DO_COND(NODE) TREE_OPERAND (DO_STMT_CHECK (NODE), 0)
00756 #define DO_BODY(NODE) TREE_OPERAND (DO_STMT_CHECK (NODE), 1)
00757
00758
00759
00760 #define EXPR_STMT_EXPR(NODE) TREE_OPERAND (EXPR_STMT_CHECK (NODE), 0)
00761
00762
00763
00764
00765 #define FOR_INIT_STMT(NODE) TREE_OPERAND (FOR_STMT_CHECK (NODE), 0)
00766 #define FOR_COND(NODE) TREE_OPERAND (FOR_STMT_CHECK (NODE), 1)
00767 #define FOR_EXPR(NODE) TREE_OPERAND (FOR_STMT_CHECK (NODE), 2)
00768 #define FOR_BODY(NODE) TREE_OPERAND (FOR_STMT_CHECK (NODE), 3)
00769
00770 #define SWITCH_STMT_COND(NODE) TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 0)
00771 #define SWITCH_STMT_BODY(NODE) TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 1)
00772 #define SWITCH_STMT_TYPE(NODE) TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 2)
00773
00774
00775 #define STMT_EXPR_STMT(NODE) TREE_OPERAND (STMT_EXPR_CHECK (NODE), 0)
00776
00777
00778 #define STMT_EXPR_NO_SCOPE(NODE) \
00779 TREE_LANG_FLAG_0 (STMT_EXPR_CHECK (NODE))
00780
00781
00782 #define COMPOUND_LITERAL_EXPR_DECL_STMT(NODE) \
00783 TREE_OPERAND (COMPOUND_LITERAL_EXPR_CHECK (NODE), 0)
00784 #define COMPOUND_LITERAL_EXPR_DECL(NODE) \
00785 DECL_EXPR_DECL (COMPOUND_LITERAL_EXPR_DECL_STMT (NODE))
00786
00787 #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) SYM,
00788
00789 enum c_tree_code {
00790 C_DUMMY_TREE_CODE = LAST_AND_UNUSED_TREE_CODE,
00791 #include "c-common.def"
00792 LAST_C_TREE_CODE
00793 };
00794
00795 #undef DEFTREECODE
00796
00797 #define c_common_stmt_codes \
00798 EXPR_STMT, FOR_STMT, \
00799 WHILE_STMT, DO_STMT, \
00800 BREAK_STMT, CONTINUE_STMT, SWITCH_STMT
00801
00802
00803
00804 extern bool statement_code_p[MAX_TREE_CODES];
00805
00806 #define STATEMENT_CODE_P(CODE) statement_code_p[(int) (CODE)]
00807
00808 #define INIT_STATEMENT_CODES(STMT_CODES) \
00809 do { \
00810 unsigned int i; \
00811 memset (&statement_code_p, 0, sizeof (statement_code_p)); \
00812 for (i = 0; i < ARRAY_SIZE (STMT_CODES); i++) \
00813 statement_code_p[STMT_CODES[i]] = true; \
00814 } while (0)
00815
00816 extern int stmts_are_full_exprs_p (void);
00817 extern int anon_aggr_type_p (tree);
00818
00819
00820
00821 #define DECL_ANON_UNION_ELEMS(NODE) DECL_ARGUMENTS ((NODE))
00822
00823
00824 #define DECL_C_BIT_FIELD(NODE) \
00825 (DECL_LANG_FLAG_4 (FIELD_DECL_CHECK (NODE)) == 1)
00826 #define SET_DECL_C_BIT_FIELD(NODE) \
00827 (DECL_LANG_FLAG_4 (FIELD_DECL_CHECK (NODE)) = 1)
00828 #define CLEAR_DECL_C_BIT_FIELD(NODE) \
00829 (DECL_LANG_FLAG_4 (FIELD_DECL_CHECK (NODE)) = 0)
00830
00831 extern void emit_local_var (tree);
00832 extern tree do_case (tree, tree);
00833 extern tree build_stmt (enum tree_code, ...);
00834 extern tree build_case_label (tree, tree, tree);
00835 extern tree build_continue_stmt (void);
00836 extern tree build_break_stmt (void);
00837
00838
00839
00840
00841 extern tree build_unary_op (enum tree_code, tree, int);
00842 extern tree build_binary_op (enum tree_code, tree, tree, int);
00843 extern int lvalue_p (tree);
00844 extern tree default_conversion (tree);
00845
00846
00847
00848
00849 extern tree common_type (tree, tree);
00850
00851 extern tree decl_constant_value (tree);
00852
00853
00854 extern tree boolean_increment (enum tree_code, tree);
00855
00856 extern int case_compare (splay_tree_key, splay_tree_key);
00857
00858 extern tree c_add_case_label (splay_tree, tree, tree, tree, tree);
00859
00860 extern void c_do_switch_warnings (splay_tree, tree);
00861
00862 extern tree build_function_call (tree, tree);
00863
00864 extern tree finish_label_address_expr (tree);
00865
00866
00867
00868 extern tree lookup_label (tree);
00869
00870 extern int vector_types_convertible_p (tree t1, tree t2);
00871
00872 extern rtx c_expand_expr (tree, rtx, enum machine_mode, int, rtx *);
00873
00874 extern tree c_staticp (tree);
00875
00876 extern void init_c_lex (void);
00877
00878 extern void c_cpp_builtins (cpp_reader *);
00879
00880
00881
00882 extern GTY(()) int pending_lang_change;
00883
00884
00885
00886 struct c_fileinfo
00887 {
00888 int time;
00889
00890
00891
00892
00893
00894
00895
00896 short interface_only;
00897 short interface_unknown;
00898 };
00899
00900 struct c_fileinfo *get_fileinfo (const char *);
00901 extern void dump_time_statistics (void);
00902
00903 extern bool c_dump_tree (void *, tree);
00904
00905 extern void c_warn_unused_result (tree *);
00906
00907 extern void verify_sequence_points (tree);
00908
00909 extern tree fold_offsetof (tree);
00910
00911
00912
00913
00914 enum lvalue_use {
00915 lv_assign,
00916 lv_increment,
00917 lv_decrement,
00918 lv_addressof,
00919 lv_asm
00920 };
00921
00922 extern int lvalue_or_else (tree, enum lvalue_use);
00923
00924 extern int complete_array_type (tree *, tree, bool);
00925
00926
00927 extern void c_genericize (tree);
00928 extern int c_gimplify_expr (tree *, tree *, tree *);
00929 extern tree c_build_bind_expr (tree, tree);
00930
00931
00932 extern void pch_init (void);
00933 extern int c_common_valid_pch (cpp_reader *pfile, const char *name, int fd);
00934 extern void c_common_read_pch (cpp_reader *pfile, const char *name, int fd,
00935 const char *orig);
00936 extern void c_common_write_pch (void);
00937 extern void c_common_no_more_pch (void);
00938 extern void c_common_pch_pragma (cpp_reader *pfile);
00939
00940 extern void builtin_define_with_value (const char *, const char *, int);
00941 extern void c_stddef_cpp_builtins (void);
00942 extern void fe_file_change (const struct line_map *);
00943 extern void c_parse_error (const char *, enum cpp_ttype, tree);
00944
00945
00946
00947
00948
00949 extern tree objc_is_class_name (tree);
00950 extern tree objc_is_object_ptr (tree);
00951 extern void objc_check_decl (tree);
00952 extern int objc_is_reserved_word (tree);
00953 extern int objc_comptypes (tree, tree, int);
00954 extern tree objc_message_selector (void);
00955 extern tree objc_lookup_ivar (tree, tree);
00956 extern void objc_clear_super_receiver (void);
00957 extern int objc_is_public (tree, tree);
00958 extern tree objc_is_id (tree);
00959 extern void objc_declare_alias (tree, tree);
00960 extern void objc_declare_class (tree);
00961 extern void objc_declare_protocols (tree);
00962 extern tree objc_build_message_expr (tree);
00963 extern tree objc_finish_message_expr (tree, tree, tree);
00964 extern tree objc_build_selector_expr (tree);
00965 extern tree objc_build_protocol_expr (tree);
00966 extern tree objc_build_encode_expr (tree);
00967 extern tree objc_build_string_object (tree);
00968 extern tree objc_get_protocol_qualified_type (tree, tree);
00969 extern tree objc_get_class_reference (tree);
00970 extern tree objc_get_class_ivars (tree);
00971 extern void objc_start_class_interface (tree, tree, tree);
00972 extern void objc_start_category_interface (tree, tree, tree);
00973 extern void objc_start_protocol (tree, tree);
00974 extern void objc_continue_interface (void);
00975 extern void objc_finish_interface (void);
00976 extern void objc_start_class_implementation (tree, tree);
00977 extern void objc_start_category_implementation (tree, tree);
00978 extern void objc_continue_implementation (void);
00979 extern void objc_finish_implementation (void);
00980 extern void objc_set_visibility (int);
00981 extern void objc_set_method_type (enum tree_code);
00982 extern tree objc_build_method_signature (tree, tree, tree);
00983 extern void objc_add_method_declaration (tree);
00984 extern void objc_start_method_definition (tree);
00985 extern void objc_finish_method_definition (tree);
00986 extern void objc_add_instance_variable (tree);
00987 extern tree objc_build_keyword_decl (tree, tree, tree);
00988 extern tree objc_build_throw_stmt (tree);
00989 extern void objc_begin_try_stmt (location_t, tree);
00990 extern void objc_finish_try_stmt (void);
00991 extern void objc_begin_catch_clause (tree);
00992 extern void objc_finish_catch_clause (void);
00993 extern void objc_build_finally_clause (location_t, tree);
00994 extern void objc_build_synchronized (location_t, tree, tree);
00995 extern int objc_static_init_needed_p (void);
00996 extern tree objc_generate_static_init_call (tree);
00997
00998
00999
01000 extern void *objc_get_current_scope (void);
01001 extern void objc_mark_locals_volatile (void *);
01002
01003
01004 extern void init_pp_output (FILE *);
01005 extern void preprocess_file (cpp_reader *);
01006 extern void pp_file_change (const struct line_map *);
01007 extern void pp_dir_change (cpp_reader *, const char *);
01008
01009 #endif