X-Git-Url: https://gcc.gnu.org/git/?a=blobdiff_plain;f=gcc%2Fc-tree.h;h=1450b300efbcce099f8f1aca66c9fce4959d7a4d;hb=7b4d5f42d8cb35d0a5a68593e3e3917e004a27d7;hp=7b71e2bf88155bf14520278acbe0df16c2ad1897;hpb=ed3eea740ab2b5bd088dc1cc63b0261a2249c12e;p=gcc.git diff --git a/gcc/c-tree.h b/gcc/c-tree.h index 7b71e2bf881..1450b300efb 100644 --- a/gcc/c-tree.h +++ b/gcc/c-tree.h @@ -19,9 +19,13 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _C_TREE_H #define _C_TREE_H -#if 0 /* I fear this may cause failures on some systems, - so I turned off the few prototypes that needed it -- rms. */ -#include + +#ifndef STDIO_PROTO +#ifdef BUFSIZ +#define STDIO_PROTO(ARGS) PROTO(ARGS) +#else +#define STDIO_PROTO(ARGS) () +#endif #endif /* Language-dependent contents of an identifier. */ @@ -137,9 +141,23 @@ struct lang_type || TYPE_MAIN_VARIANT (t) == unsigned_char_type_node \ || TYPE_MAIN_VARIANT (t) == short_integer_type_node \ || TYPE_MAIN_VARIANT (t) == short_unsigned_type_node)) + +/* In a VAR_DECL, means the variable is really an iterator. */ +#define ITERATOR_P(D) (DECL_LANG_FLAG_4(D)) + +/* In a VAR_DECL for an iterator, means we are within + an explicit loop over that iterator. */ +#define ITERATOR_BOUND_P(NODE) ((NODE)->common.readonly_flag) -extern int maybe_objc_comptypes PROTO((tree, tree)); +/* in c-lang.c and objc-act.c */ +extern tree lookup_interface PROTO((tree)); +extern tree is_class_name PROTO((tree)); +extern void maybe_objc_check_decl PROTO((tree)); +extern int maybe_objc_comptypes PROTO((tree, tree, int)); extern tree maybe_building_objc_message_expr PROTO((void)); +extern tree maybe_objc_method_name PROTO((tree)); +extern int recognize_objc_keyword PROTO((void)); +extern tree build_objc_string PROTO((int, char *)); /* in c-aux-info.c */ extern void gen_aux_info_record PROTO((tree, int, int, int)); @@ -157,14 +175,10 @@ extern void constant_expression_warning PROTO((tree)); extern void decl_attributes PROTO((tree, tree)); extern void declare_function_name PROTO((void)); extern tree convert_and_check PROTO((tree, tree)); -extern void constant_expression_warning PROTO((tree)); extern void overflow_warning PROTO((tree)); extern void unsigned_conversion_warning PROTO((tree, tree)); /* Read the rest of the current #-directive line. */ -#if 0 -extern char *get_directive_line PROTO((FILE *)); -#endif -extern char *get_directive_line (); +extern char *get_directive_line STDIO_PROTO((FILE *)); /* Subroutine of build_binary_op, used for comparison operations. See if the operands have both been converted from subword integer types and, if so, perhaps change them both back to their original type. */ @@ -205,6 +219,10 @@ extern tree long_integer_type_node; extern tree long_long_integer_type_node; extern tree long_long_unsigned_type_node; extern tree long_unsigned_type_node; +extern tree complex_integer_type_node; +extern tree complex_float_type_node; +extern tree complex_double_type_node; +extern tree complex_long_double_type_node; extern tree ptr_type_node; extern tree ptrdiff_type_node; extern tree short_integer_type_node; @@ -259,6 +277,7 @@ extern void keep_next_level PROTO((void)); extern int kept_level_p PROTO((void)); extern tree lookup_label PROTO((tree)); extern tree lookup_name PROTO((tree)); +extern tree lookup_name_current_level PROTO((tree)); extern tree maybe_build_cleanup PROTO((tree)); extern void parmlist_tags_warning PROTO((void)); extern void pending_xref_error PROTO((void)); @@ -266,9 +285,8 @@ extern void pop_c_function_context PROTO((void)); extern void pop_label_level PROTO((void)); extern tree poplevel PROTO((int, int, int)); extern void print_lang_decl PROTO((void)); -#if 0 -extern void print_lang_identifier PROTO((FILE *, tree, int)); -#endif +extern void print_lang_identifier STDIO_PROTO((FILE *, tree, + int)); extern void print_lang_type PROTO((void)); extern void push_c_function_context PROTO((void)); extern void push_label_level PROTO((void)); @@ -310,8 +328,17 @@ extern tree common_type PROTO((tree, tree)); extern tree default_conversion PROTO((tree)); extern tree digest_init PROTO((tree, tree, tree *, int, int, char *)); extern tree parser_build_binary_op PROTO((enum tree_code, tree, tree)); +extern tree require_complete_type PROTO((tree)); extern void store_init_value PROTO((tree, tree)); +/* in c-iterate.c */ +extern void iterator_expand PROTO((tree)); +extern void iterator_for_loop_start PROTO((tree)); +extern void iterator_for_loop_end PROTO((tree)); +extern void iterator_for_loop_record PROTO((tree)); +extern void push_iterator_stack PROTO((void)); +extern void pop_iterator_stack PROTO((void)); + /* Set to 0 at beginning of a function definition, set to 1 if a return statement that specifies a return value is seen. */ @@ -400,6 +427,10 @@ extern int flag_traditional; extern int warn_parentheses; +/* Warn if initializer is not completely bracketed. */ + +extern int warn_missing_braces; + /* Nonzero means this is a function to call to perform comptypes on two record types. */ @@ -409,4 +440,8 @@ extern int (*comptypes_record_hook) (); extern int system_header_p; +/* Nonzero enables objc features. */ + +extern int doing_objc_thang; + #endif /* not _C_TREE_H */