Deleted Added
full compact
3c3
< 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
---
> 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
19,20c19,20
< Software Foundation, 59 Temple Place - Suite 330, Boston, MA
< 02111-1307, USA. */
---
> Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
> 02110-1301, USA. */
30,31c30
< 0: COMPOUND_STMT_NO_SCOPE (in COMPOUND_STMT).
< TREE_NEGATED_INT (in INTEGER_CST).
---
> 0: TREE_NEGATED_INT (in INTEGER_CST).
33d31
< SCOPE_BEGIN_P (in SCOPE_STMT)
35,37d32
< NEW_FOR_SCOPE_P (in FOR_STMT)
< ASM_INPUT_P (in ASM_STMT)
< STMT_EXPR_NO_SCOPE (in STMT_EXPR)
39,44c34,37
< STMT_IS_FULL_EXPR_P (in _STMT)
< 2: STMT_LINENO_FOR_FN_P (in _STMT)
< 3: SCOPE_NO_CLEANUPS_P (in SCOPE_STMT)
< COMPOUND_STMT_BODY_BLOCK (in COMPOUND_STMT)
< STMT_EXPR_WARN_UNUSED_RESULT (in STMT_EXPR)
< 4: SCOPE_PARTIAL_P (in SCOPE_STMT)
---
> STATEMENT_LIST_STMT_EXPR (in STATEMENT_LIST)
> 2: unused
> 3: STATEMENT_LIST_HAS_LABEL (in STATEMENT_LIST)
> 4: unused
80,81c73,75
< RID_EXTENSION, RID_IMAGPART, RID_REALPART, RID_LABEL, RID_PTRBASE,
< RID_PTREXTENT, RID_PTRVALUE, RID_CHOOSE_EXPR, RID_TYPES_COMPATIBLE_P,
---
> RID_EXTENSION, RID_IMAGPART, RID_REALPART, RID_LABEL, RID_CHOOSE_EXPR,
> RID_TYPES_COMPATIBLE_P,
> RID_DFLOAT32, RID_DFLOAT64, RID_DFLOAT128,
91,93c85,87
< RID_NEW, RID_OFFSETOF, RID_OPERATOR,
< RID_THIS, RID_THROW, RID_TRUE,
< RID_TRY, RID_TYPENAME, RID_TYPEID,
---
> RID_NEW, RID_OFFSETOF, RID_OPERATOR,
> RID_THIS, RID_THROW, RID_TRUE,
> RID_TRY, RID_TYPENAME, RID_TYPEID,
100c94
< RID_ID, RID_AT_ENCODE, RID_AT_END,
---
> RID_AT_ENCODE, RID_AT_END,
103c97
< RID_AT_PROTOCOL, RID_AT_SELECTOR,
---
> RID_AT_PROTOCOL, RID_AT_SELECTOR,
121,122c115,116
< ((unsigned int)(rid) >= (unsigned int)RID_FIRST_AT && \
< (unsigned int)(rid) <= (unsigned int)RID_LAST_AT)
---
> ((unsigned int) (rid) >= (unsigned int) RID_FIRST_AT && \
> (unsigned int) (rid) <= (unsigned int) RID_LAST_AT)
125,126c119,120
< ((unsigned int)(rid) >= (unsigned int)RID_FIRST_PQ && \
< (unsigned int)(rid) <= (unsigned int)RID_LAST_PQ)
---
> ((unsigned int) (rid) >= (unsigned int) RID_FIRST_PQ && \
> (unsigned int) (rid) <= (unsigned int) RID_LAST_PQ)
130c124
< extern GTY ((length ("(int)RID_MAX"))) tree *ridpointers;
---
> extern GTY ((length ("(int) RID_MAX"))) tree *ridpointers;
160,164d153
< CTI_G77_INTEGER_TYPE,
< CTI_G77_UINTEGER_TYPE,
< CTI_G77_LONGINT_TYPE,
< CTI_G77_ULONGINT_TYPE,
<
170c159
<
---
>
172a162,163
> CTI_NULL,
>
209,214d199
< /* g77 integer types, which which must be kept in sync with f/com.h */
< #define g77_integer_type_node c_global_trees[CTI_G77_INTEGER_TYPE]
< #define g77_uinteger_type_node c_global_trees[CTI_G77_UINTEGER_TYPE]
< #define g77_longint_type_node c_global_trees[CTI_G77_LONGINT_TYPE]
< #define g77_ulongint_type_node c_global_trees[CTI_G77_ULONGINT_TYPE]
<
222a208,210
> /* The node for C++ `__null'. */
> #define null_node c_global_trees[CTI_NULL]
>
237,240d224
< /* Flag strings given by __FUNCTION__ and __PRETTY_FUNCTION__ for a
< warning if they undergo concatenation. */
< #define C_ARTIFICIAL_STRING_P(NODE) TREE_LANG_FLAG_0 (NODE)
<
260,266c244,246
< /* The last statement added to the tree. */
< tree x_last_stmt;
< /* The type of the last expression statement. (This information is
< needed to implement the statement-expression extension.) */
< tree x_last_expr_type;
< /* The last filename we recorded. */
< const char *x_last_expr_filename;
---
> /* The current statement list being collected. */
> tree x_cur_stmt_list;
>
293,294d272
< /* The stack of SCOPE_STMTs for the current function. */
< tree x_scope_stmt_stack;
297,298c275,277
< /* When building a statement-tree, this is the last statement added to
< the tree. */
---
> /* When building a statement-tree, this is the current statement list
> being collected. It's TREE_CHAIN is a back-pointer to the previous
> statement list. */
300c279
< #define last_tree (current_stmt_tree ()->x_last_stmt)
---
> #define cur_stmt_list (current_stmt_tree ()->x_cur_stmt_list)
302,321d280
< /* The type of the last expression-statement we have seen. */
<
< #define last_expr_type (current_stmt_tree ()->x_last_expr_type)
<
< /* The name of the last file we have seen. */
<
< #define last_expr_filename (current_stmt_tree ()->x_last_expr_filename)
<
< /* LAST_TREE contains the last statement parsed. These are chained
< together through the TREE_CHAIN field, but often need to be
< re-organized since the parse is performed bottom-up. This macro
< makes LAST_TREE the indicated SUBSTMT of STMT. */
<
< #define RECHAIN_STMTS(stmt, substmt) \
< do { \
< substmt = TREE_CHAIN (stmt); \
< TREE_CHAIN (stmt) = NULL_TREE; \
< last_tree = stmt; \
< } while (0)
<
324,327d282
< extern void (*lang_expand_stmt) (tree);
< extern void (*lang_expand_decl_stmt) (tree);
< extern void (*lang_expand_function_end) (void);
<
332c287,292
< extern int yyparse (void);
---
> /* If non-NULL, this function is called after a precompile header file
> is loaded. */
> extern void (*lang_post_pch_load) (void);
>
> extern void push_file_scope (void);
> extern void pop_file_scope (void);
334,335c294,295
< extern tree *current_scope_stmt_stack (void);
< extern void begin_stmt_tree (tree *);
---
> extern tree push_stmt_list (void);
> extern tree pop_stmt_list (tree);
337,339c297,301
< extern void add_decl_stmt (tree);
< extern tree add_scope_stmt (int, int);
< extern void finish_stmt_tree (tree *);
---
> extern void push_cleanup (tree, tree, bool);
> extern tree pushdecl_top_level (tree);
> extern tree pushdecl (tree);
> extern tree build_modify_expr (tree, enum tree_code, tree);
> extern tree build_indirect_ref (tree, const char *);
341,346c303
< extern tree walk_stmt_tree (tree *, walk_tree_fn, void *);
< extern void prep_stmt (tree);
< extern void expand_stmt (tree);
< extern tree c_begin_if_stmt (void);
< extern tree c_begin_while_stmt (void);
< extern void c_finish_while_stmt_cond (tree, tree);
---
> extern int c_expand_decl (tree);
349,350c306,308
< extern void resort_sorted_fields (void *, void *, gt_pointer_operator,
< void *);
---
> extern void resort_sorted_fields (void *, void *, gt_pointer_operator,
> void *);
> extern bool has_c_linkage (tree decl);
366a325,327
> /* Nonzero means that we generate NeXT setjmp based exceptions. */
> extern int flag_objc_sjlj_exceptions;
>
394a356,359
> /* Nonzero means process PCH files while preprocessing. */
>
> extern bool flag_pch_preprocess;
>
442d406
< extern int explicit_flag_signed_bitfields;
444,445c408
< /* Nonzero means warn about pointer casts that can drop a type qualifier
< from the pointer target type. */
---
> /* Warn about #pragma directives that are not recognized. */
447c410
< extern int warn_cast_qual;
---
> extern int warn_unknown_pragmas; /* Tri state variable. */
449,508d411
< /* Warn about functions which might be candidates for format attributes. */
<
< extern int warn_missing_format_attribute;
<
< /* Nonzero means do not warn that K&R style main() is not a function prototype. */
< extern int flag_bsd_no_warn_kr_main;
<
< /* Nonzero means warn about sizeof(function) or addition/subtraction
< of function pointers. */
<
< extern int warn_pointer_arith;
<
< /* Nonzero means warn for any global function def
< without separate previous prototype decl. */
<
< extern int warn_missing_prototypes;
<
< /* Warn if adding () is suggested. */
<
< extern int warn_parentheses;
<
< /* Warn if initializer is not completely bracketed. */
<
< extern int warn_missing_braces;
<
< /* Warn about comparison of signed and unsigned values.
< If -1, neither -Wsign-compare nor -Wno-sign-compare has been specified. */
<
< extern int warn_sign_compare;
<
< /* Nonzero means warn about usage of long long when `-pedantic'. */
<
< extern int warn_long_long;
<
< /* Nonzero means warn about deprecated conversion from string constant to
< `char *'. */
<
< extern int warn_write_strings;
<
< /* Nonzero means warn about multiple (redundant) decls for the same single
< variable or function. */
<
< extern int warn_redundant_decls;
<
< /* Warn about testing equality of floating point numbers. */
<
< extern int warn_float_equal;
<
< /* Warn about a subscript that has type char. */
<
< extern int warn_char_subscripts;
<
< /* Warn if a type conversion is done that might have confusing results. */
<
< extern int warn_conversion;
<
< /* Warn about #pragma directives that are not recognized. */
<
< extern int warn_unknown_pragmas; /* Tri state variable. */
<
514d416
< /* Warn about Y2K problems with strftime formats. */
516,534d417
< extern int warn_format_y2k;
<
< /* Warn about excess arguments to formats. */
<
< extern int warn_format_extra_args;
<
< /* Warn about zero-length formats. */
<
< extern int warn_format_zero_length;
<
< /* Warn about non-literal format arguments. */
<
< extern int warn_format_nonliteral;
<
< /* Warn about possible security problems with calls to format functions. */
<
< extern int warn_format_security;
<
<
538,542d420
< /* Nonzero means message about use of implicit function declarations;
< 1 means warning; 2 means error. */
<
< extern int mesg_implicit_function_declaration;
<
556,559d433
< /* Nonzero means allow the BSD kernel printf enhancments. */
<
< extern int flag_bsd_format;
<
564,595d437
< /* Nonzero means warn when casting a function call to a type that does
< not match the return type (e.g. (float)sqrt() or (anything*)malloc()
< when there is no previous declaration of sqrt or malloc. */
<
< extern int warn_bad_function_cast;
<
< /* Warn about traditional constructs whose meanings changed in ANSI C. */
<
< extern int warn_traditional;
<
< /* Nonzero means warn for a declaration found after a statement. */
<
< extern int warn_declaration_after_statement;
<
< /* Nonzero means warn for non-prototype function decls
< or non-prototyped defs without previous prototype. */
<
< extern int warn_strict_prototypes;
<
< /* Nonzero means warn for any global function def
< without separate previous decl. */
<
< extern int warn_missing_declarations;
<
< /* Nonzero means warn about extern declarations of objects not at
< file-scope level and about *all* declarations of functions (whether
< extern or static) not at file-scope level. Note that we exclude
< implicit function declarations. To get warnings about those, use
< -Wimplicit. */
<
< extern int warn_nested_externs;
<
600d441
< /* Nonzero means warn about possible violations of sequence point rules. */
602,626d442
< extern int warn_sequence_point;
<
< /* Nonzero means warn about uninitialized variable when it is initialized with itself.
< For example: int i = i;, GCC will not warn about this when warn_init_self is nonzero. */
<
< extern int warn_init_self;
<
<
< /* Nonzero means to warn about compile-time division by zero. */
< extern int warn_div_by_zero;
<
< /* Nonzero means warn about use of implicit int. */
<
< extern int warn_implicit_int;
<
< /* Warn about NULL being passed to argument slots marked as requiring
< non-NULL. */
<
< extern int warn_nonnull;
<
< /* Warn about old-style parameter declaration. */
<
< extern int warn_old_style_definition;
<
<
635,638d450
< /* Generate code for GNU or NeXT runtime environment. */
<
< extern int flag_next_runtime;
<
649,651d460
< /* Warn if multiple methods are seen for the same selector, but with
< different argument types. Performs the check on the whole selector
< table at the end of compilation. */
653,668d461
< extern int warn_selector;
<
< /* Warn if a @selector() is found, and no method with that selector
< has been previously declared. The check is done on each
< @selector() as soon as it is found - so it warns about forward
< declarations. */
<
< extern int warn_undeclared_selector;
<
< /* Warn if methods required by a protocol are not implemented in the
< class adopting it. When turned off, methods inherited to that
< class are also considered implemented. */
<
< extern int warn_protocol;
<
<
757a551,555
> /* Nonzero to use __cxa_get_exception_ptr in the C++ exception-handling
> logic. */
>
> extern int flag_use_cxa_get_exception_ptr;
>
770,771c568,569
< /* Nonzero means warn about things that will change when compiling
< with an ABI-compliant compiler. */
---
> /* Nonzero (the default) means to generate thread-safe code for
> initializing local statics. */
773c571
< extern int warn_abi;
---
> extern int flag_threadsafe_statics;
775,778d572
< /* Nonzero means warn about invalid uses of offsetof. */
<
< extern int warn_invalid_offsetof;
<
783,784c577,579
< /* Nonzero means warn when all ctors or dtors are private, and the class
< has no friends. */
---
> /* Warn about using __null (as NULL in C++) as sentinel. For code compiled
> with GCC this doesn't matter as __null is guaranteed to have the right
> size. */
786c581
< extern int warn_ctor_dtor_privacy;
---
> extern int warn_strict_null_sentinel;
788,833d582
< /* Nonzero means warn in function declared in derived class has the
< same name as a virtual in the base class, but fails to match the
< type signature of any virtual function in the base class. */
<
< extern int warn_overloaded_virtual;
<
< /* Nonzero means warn when declaring a class that has a non virtual
< destructor, when it really ought to have a virtual one. */
<
< extern int warn_nonvdtor;
<
< /* Nonzero means warn when the compiler will reorder code. */
<
< extern int warn_reorder;
<
< /* Nonzero means warn when synthesis behavior differs from Cfront's. */
<
< extern int warn_synth;
<
< /* Nonzero means warn when we convert a pointer to member function
< into a pointer to (void or function). */
<
< extern int warn_pmf2ptr;
<
< /* Nonzero means warn about violation of some Effective C++ style rules. */
<
< extern int warn_ecpp;
<
< /* Nonzero means warn where overload resolution chooses a promotion from
< unsigned to signed over a conversion to an unsigned of the same size. */
<
< extern int warn_sign_promo;
<
< /* Nonzero means warn when an old-style cast is used. */
<
< extern int warn_old_style_cast;
<
< /* Nonzero means warn when non-templatized friend functions are
< declared within a template */
<
< extern int warn_nontemplate_friend;
<
< /* Nonzero means complain about deprecated features. */
<
< extern int warn_deprecated;
<
861,864d609
< /* Record in each node resulting from a binary operator
< what operator was specified for it. */
< #define C_EXP_ORIGINAL_CODE(exp) ((enum tree_code) TREE_COMPLEXITY (exp))
<
884c629
< extern void check_function_arguments (tree, tree);
---
> extern void check_function_arguments (tree, tree, tree);
890c635
< extern void check_function_format (int *, tree, tree);
---
> extern void check_function_format (tree, tree);
900a646
> extern tree c_build_bitfield_integer_type (unsigned HOST_WIDE_INT, int);
903c649
< extern tree c_sizeof_or_alignof_type (tree, enum tree_code, int);
---
> extern tree c_sizeof_or_alignof_type (tree, bool, int);
908,918d653
< #define my_friendly_assert(EXP, N) (void) \
< (((EXP) == 0) ? (fancy_abort (__FILE__, __LINE__, __FUNCTION__), 0) : 0)
<
< extern tree c_expand_expr_stmt (tree);
< extern void c_expand_start_cond (tree, int, tree);
< extern void c_finish_then (void);
< extern void c_expand_start_else (void);
< extern void c_finish_else (void);
< extern void c_expand_end_cond (void);
< /* Validate the expression after `case' and apply default promotions. */
< extern tree check_case_value (tree);
921a657,658
> extern void strict_aliasing_warning(tree, tree, tree);
> extern void empty_body_warning (tree, tree);
924c661,662
< extern void unsigned_conversion_warning (tree, tree);
---
> extern bool c_determine_visibility (tree);
> extern bool same_scalar_type_ignoring_signedness (tree, tree);
926,930c664,665
< /* Read the rest of the current #-directive line. */
< extern char *get_directive_line (void);
< #define GET_DIRECTIVE_LINE() get_directive_line ()
< #define c_sizeof(T) c_sizeof_or_alignof_type (T, SIZEOF_EXPR, 1)
< #define c_alignof(T) c_sizeof_or_alignof_type (T, ALIGNOF_EXPR, 1)
---
> #define c_sizeof(T) c_sizeof_or_alignof_type (T, true, 1)
> #define c_alignof(T) c_sizeof_or_alignof_type (T, false, 1)
946a682,683
> extern void set_builtin_user_assembler_name (tree decl, const char *asmspec);
>
948a686,687
> extern void set_compound_literal_name (tree decl);
>
961a701
> extern HOST_WIDE_INT c_common_to_target_charset (HOST_WIDE_INT);
963,965d702
< /* This function resets the parsers' state in preparation for parsing
< a new file. */
< extern void c_reset_state (void);
970a708
>
973,977c711,714
< /* Nonzero if this statement should be considered a full-expression,
< i.e., if temporaries created during this statement should have
< their destructors run at the end of this statement. (In C, this
< will always be false, since there are no destructors.) */
< #define STMT_IS_FULL_EXPR_P(NODE) TREE_LANG_FLAG_1 ((NODE))
---
> /* Nonzero if a given STATEMENT_LIST represents the outermost binding
> if a statement expression. */
> #define STATEMENT_LIST_STMT_EXPR(NODE) \
> TREE_LANG_FLAG_1 (STATEMENT_LIST_CHECK (NODE))
979,984c716,718
< /* IF_STMT accessors. These give access to the condition of the if
< statement, the then block of the if statement, and the else block
< of the if statement if it exists. */
< #define IF_COND(NODE) TREE_OPERAND (IF_STMT_CHECK (NODE), 0)
< #define THEN_CLAUSE(NODE) TREE_OPERAND (IF_STMT_CHECK (NODE), 1)
< #define ELSE_CLAUSE(NODE) TREE_OPERAND (IF_STMT_CHECK (NODE), 2)
---
> /* Nonzero if a label has been added to the statement list. */
> #define STATEMENT_LIST_HAS_LABEL(NODE) \
> TREE_LANG_FLAG_3 (STATEMENT_LIST_CHECK (NODE))
986,1067d719
< /* WHILE_STMT accessors. These give access to the condition of the
< while statement and the body of the while statement, respectively. */
< #define WHILE_COND(NODE) TREE_OPERAND (WHILE_STMT_CHECK (NODE), 0)
< #define WHILE_BODY(NODE) TREE_OPERAND (WHILE_STMT_CHECK (NODE), 1)
<
< /* DO_STMT accessors. These give access to the condition of the do
< statement and the body of the do statement, respectively. */
< #define DO_COND(NODE) TREE_OPERAND (DO_STMT_CHECK (NODE), 0)
< #define DO_BODY(NODE) TREE_OPERAND (DO_STMT_CHECK (NODE), 1)
<
< /* RETURN_STMT accessors. These give the expression associated with a
< return statement, and whether it should be ignored when expanding
< (as opposed to inlining). */
< #define RETURN_STMT_EXPR(NODE) TREE_OPERAND (RETURN_STMT_CHECK (NODE), 0)
<
< /* EXPR_STMT accessor. This gives the expression associated with an
< expression statement. */
< #define EXPR_STMT_EXPR(NODE) TREE_OPERAND (EXPR_STMT_CHECK (NODE), 0)
<
< /* FOR_STMT accessors. These give access to the init statement,
< condition, update expression, and body of the for statement,
< respectively. */
< #define FOR_INIT_STMT(NODE) TREE_OPERAND (FOR_STMT_CHECK (NODE), 0)
< #define FOR_COND(NODE) TREE_OPERAND (FOR_STMT_CHECK (NODE), 1)
< #define FOR_EXPR(NODE) TREE_OPERAND (FOR_STMT_CHECK (NODE), 2)
< #define FOR_BODY(NODE) TREE_OPERAND (FOR_STMT_CHECK (NODE), 3)
<
< /* SWITCH_STMT accessors. These give access to the condition, body and
< original condition type (before any compiler conversions)
< of the switch statement, respectively. */
< #define SWITCH_COND(NODE) TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 0)
< #define SWITCH_BODY(NODE) TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 1)
< #define SWITCH_TYPE(NODE) TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 2)
<
< /* CASE_LABEL accessors. These give access to the high and low values
< of a case label, respectively. */
< #define CASE_LOW(NODE) TREE_OPERAND (CASE_LABEL_CHECK (NODE), 0)
< #define CASE_HIGH(NODE) TREE_OPERAND (CASE_LABEL_CHECK (NODE), 1)
< #define CASE_LABEL_DECL(NODE) TREE_OPERAND (CASE_LABEL_CHECK (NODE), 2)
<
< /* GOTO_STMT accessor. This gives access to the label associated with
< a goto statement. */
< #define GOTO_DESTINATION(NODE) TREE_OPERAND (GOTO_STMT_CHECK (NODE), 0)
< /* True for goto created artificially by the compiler. */
< #define GOTO_FAKE_P(NODE) (TREE_LANG_FLAG_0 (GOTO_STMT_CHECK (NODE)))
<
< /* COMPOUND_STMT accessor. This gives access to the TREE_LIST of
< statements associated with a compound statement. The result is the
< first statement in the list. Succeeding nodes can be accessed by
< calling TREE_CHAIN on a node in the list. */
< #define COMPOUND_BODY(NODE) TREE_OPERAND (COMPOUND_STMT_CHECK (NODE), 0)
<
< /* ASM_STMT accessors. ASM_STRING returns a STRING_CST for the
< instruction (e.g., "mov x, y"). ASM_OUTPUTS, ASM_INPUTS, and
< ASM_CLOBBERS represent the outputs, inputs, and clobbers for the
< statement. */
< #define ASM_CV_QUAL(NODE) TREE_OPERAND (ASM_STMT_CHECK (NODE), 0)
< #define ASM_STRING(NODE) TREE_OPERAND (ASM_STMT_CHECK (NODE), 1)
< #define ASM_OUTPUTS(NODE) TREE_OPERAND (ASM_STMT_CHECK (NODE), 2)
< #define ASM_INPUTS(NODE) TREE_OPERAND (ASM_STMT_CHECK (NODE), 3)
< #define ASM_CLOBBERS(NODE) TREE_OPERAND (ASM_STMT_CHECK (NODE), 4)
<
< /* DECL_STMT accessor. This gives access to the DECL associated with
< the given declaration statement. */
< #define DECL_STMT_DECL(NODE) TREE_OPERAND (DECL_STMT_CHECK (NODE), 0)
<
< /* STMT_EXPR accessor. */
< #define STMT_EXPR_STMT(NODE) TREE_OPERAND (STMT_EXPR_CHECK (NODE), 0)
<
< /* Nonzero if this statement-expression does not have an associated scope. */
< #define STMT_EXPR_NO_SCOPE(NODE) \
< TREE_LANG_FLAG_0 (STMT_EXPR_CHECK (NODE))
<
< /* Nonzero if this statement-expression should cause warning if its result
< is not used. */
< #define STMT_EXPR_WARN_UNUSED_RESULT(NODE) \
< TREE_LANG_FLAG_3 (STMT_EXPR_CHECK (NODE))
<
< /* LABEL_STMT accessor. This gives access to the label associated with
< the given label statement. */
< #define LABEL_STMT_LABEL(NODE) TREE_OPERAND (LABEL_STMT_CHECK (NODE), 0)
<
1072c724
< DECL_STMT_DECL (COMPOUND_LITERAL_EXPR_DECL_STMT (NODE))
---
> DECL_EXPR_DECL (COMPOUND_LITERAL_EXPR_DECL_STMT (NODE))
1074,1146d725
< /* Nonzero if this SCOPE_STMT is for the beginning of a scope. */
< #define SCOPE_BEGIN_P(NODE) \
< (TREE_LANG_FLAG_0 (SCOPE_STMT_CHECK (NODE)))
<
< /* Nonzero if this SCOPE_STMT is for the end of a scope. */
< #define SCOPE_END_P(NODE) \
< (!SCOPE_BEGIN_P (SCOPE_STMT_CHECK (NODE)))
<
< /* The BLOCK containing the declarations contained in this scope. */
< #define SCOPE_STMT_BLOCK(NODE) \
< (TREE_OPERAND (SCOPE_STMT_CHECK (NODE), 0))
<
< /* Nonzero for a SCOPE_STMT if there were no variables in this scope. */
< #define SCOPE_NULLIFIED_P(NODE) \
< (SCOPE_STMT_BLOCK ((NODE)) == NULL_TREE)
<
< /* Nonzero for a SCOPE_STMT which represents a lexical scope, but
< which should be treated as non-existent from the point of view of
< running cleanup actions. */
< #define SCOPE_NO_CLEANUPS_P(NODE) \
< (TREE_LANG_FLAG_3 (SCOPE_STMT_CHECK (NODE)))
<
< /* Nonzero for a SCOPE_STMT if this statement is for a partial scope.
< For example, in:
<
< S s;
< l:
< S s2;
< goto l;
<
< there is (implicitly) a new scope after `l', even though there are
< no curly braces. In particular, when we hit the goto, we must
< destroy s2 and then re-construct it. For the implicit scope,
< SCOPE_PARTIAL_P will be set. */
< #define SCOPE_PARTIAL_P(NODE) \
< (TREE_LANG_FLAG_4 (SCOPE_STMT_CHECK (NODE)))
<
< /* Nonzero for an ASM_STMT if the assembly statement is volatile. */
< #define ASM_VOLATILE_P(NODE) \
< (ASM_CV_QUAL (ASM_STMT_CHECK (NODE)) != NULL_TREE)
<
< /* The VAR_DECL to clean up in a CLEANUP_STMT. */
< #define CLEANUP_DECL(NODE) \
< TREE_OPERAND (CLEANUP_STMT_CHECK (NODE), 0)
< /* The cleanup to run in a CLEANUP_STMT. */
< #define CLEANUP_EXPR(NODE) \
< TREE_OPERAND (CLEANUP_STMT_CHECK (NODE), 1)
<
< /* The filename we are changing to as of this FILE_STMT. */
< #define FILE_STMT_FILENAME_NODE(NODE) \
< (TREE_OPERAND (FILE_STMT_CHECK (NODE), 0))
< #define FILE_STMT_FILENAME(NODE) \
< (IDENTIFIER_POINTER (FILE_STMT_FILENAME_NODE (NODE)))
<
< /* The line-number at which a statement began. But if
< STMT_LINENO_FOR_FN_P does holds, then this macro gives the
< line number for the end of the current function instead. */
< #define STMT_LINENO(NODE) \
< (TREE_COMPLEXITY ((NODE)))
<
< /* If nonzero, the STMT_LINENO for NODE is the line at which the
< function ended. */
< #define STMT_LINENO_FOR_FN_P(NODE) \
< (TREE_LANG_FLAG_2 ((NODE)))
<
< /* Nonzero if we want the new ISO rules for pushing a new scope for `for'
< initialization variables. */
< #define NEW_FOR_SCOPE_P(NODE) (TREE_LANG_FLAG_0 (NODE))
<
< /* Nonzero if we want to create an ASM_INPUT instead of an
< ASM_OPERAND with no operands. */
< #define ASM_INPUT_P(NODE) (TREE_LANG_FLAG_0 (NODE))
<
1157,1197d735
< #define c_common_stmt_codes \
< CLEANUP_STMT, EXPR_STMT, COMPOUND_STMT, \
< DECL_STMT, IF_STMT, FOR_STMT, \
< WHILE_STMT, DO_STMT, RETURN_STMT, \
< BREAK_STMT, CONTINUE_STMT, SCOPE_STMT, \
< SWITCH_STMT, GOTO_STMT, LABEL_STMT, \
< ASM_STMT, FILE_STMT, CASE_LABEL
<
< /* TRUE if a code represents a statement. The front end init
< langhook should take care of initialization of this array. */
< extern bool statement_code_p[MAX_TREE_CODES];
<
< #define STATEMENT_CODE_P(CODE) statement_code_p[(int) (CODE)]
<
< #define INIT_STATEMENT_CODES(STMT_CODES) \
< do { \
< unsigned int i; \
< memset (&statement_code_p, 0, sizeof (statement_code_p)); \
< for (i = 0; i < ARRAY_SIZE (STMT_CODES); i++) \
< statement_code_p[STMT_CODES[i]] = true; \
< } while (0)
<
< extern void genrtl_do_pushlevel (void);
< extern void genrtl_goto_stmt (tree);
< extern void genrtl_expr_stmt (tree);
< extern void genrtl_expr_stmt_value (tree, int, int);
< extern void genrtl_decl_stmt (tree);
< extern void genrtl_if_stmt (tree);
< extern void genrtl_while_stmt (tree);
< extern void genrtl_do_stmt (tree);
< extern void genrtl_return_stmt (tree);
< extern void genrtl_for_stmt (tree);
< extern void genrtl_break_stmt (void);
< extern void genrtl_continue_stmt (void);
< extern void genrtl_scope_stmt (tree);
< extern void genrtl_switch_stmt (tree);
< extern void genrtl_case_label (tree);
< extern void genrtl_compound_stmt (tree);
< extern void genrtl_asm_stmt (tree, tree, tree, tree, tree, int);
< extern void genrtl_cleanup_stmt (tree);
< extern int stmts_are_full_exprs_p (void);
1212,1215d749
< /* In a VAR_DECL, nonzero if the decl is a register variable with
< an explicit asm specification. */
< #define DECL_C_HARD_REGISTER(DECL) DECL_LANG_FLAG_4 (VAR_DECL_CHECK (DECL))
<
1217,1219d750
< extern void make_rtl_for_local_static (tree);
< extern tree expand_cond (tree);
< extern tree c_expand_return (tree);
1223,1225d753
< extern tree build_continue_stmt (void);
< extern tree build_break_stmt (void);
< extern tree build_return_stmt (tree);
1227,1234d754
< #define COMPOUND_STMT_NO_SCOPE(NODE) TREE_LANG_FLAG_0 (NODE)
<
< /* Used by the C++ frontend to mark the block around the member
< initializers and cleanups. */
< #define COMPOUND_STMT_BODY_BLOCK(NODE) TREE_LANG_FLAG_3 (NODE)
<
< extern void c_expand_asm_operands (tree, tree, tree, tree, int, location_t);
<
1240c760,764
< extern int lvalue_p (tree);
---
> extern tree perform_integral_promotions (tree);
>
> /* These functions must be defined by each front-end which implements
> a variant of the C language. They are used by port files. */
>
1248,1249d771
< extern tree expand_tree_builtin (tree, tree, tree);
<
1255,1258d776
< /* Hook currently used only by the C++ front end to reset internal state
< after entering or leaving a header file. */
< extern void extract_interface_info (void);
<
1261c779
< extern tree c_add_case_label (splay_tree, tree, tree, tree);
---
> extern tree c_add_case_label (splay_tree, tree, tree, tree, tree);
1262a781,782
> extern void c_do_switch_warnings (splay_tree, location_t, tree, tree);
>
1264a785,786
> extern tree resolve_overloaded_builtin (tree, tree);
>
1269a792
> extern tree lookup_name (tree);
1275c798
< extern int c_safe_from_p (rtx, tree);
---
> extern tree c_staticp (tree);
1277,1280d799
< extern int c_staticp (tree);
<
< extern int c_common_unsafe_for_reeval (tree);
<
1287c806
< extern int pending_lang_change;
---
> extern GTY(()) int pending_lang_change;
1294c813,820
< short interface_only; /* Flags - used only by C++ */
---
>
> /* Flags used only by C++.
> INTERFACE_ONLY nonzero means that we are in an "interface" section
> of the compiler. INTERFACE_UNKNOWN nonzero means we cannot trust
> the value of INTERFACE_ONLY. If INTERFACE_UNKNOWN is zero and
> INTERFACE_ONLY is zero, it means that we are responsible for
> exporting definitions that others might need. */
> short interface_only;
1302a829,859
> extern void c_warn_unused_result (tree *);
>
> extern void verify_sequence_points (tree);
>
> extern tree fold_offsetof (tree, tree);
>
> /* Places where an lvalue, or modifiable lvalue, may be required.
> Used to select diagnostic messages in lvalue_error and
> readonly_error. */
> enum lvalue_use {
> lv_assign,
> lv_increment,
> lv_decrement,
> lv_addressof,
> lv_asm
> };
>
> extern void lvalue_error (enum lvalue_use);
>
> extern int complete_array_type (tree *, tree, bool);
>
> extern tree builtin_type_for_size (int, bool);
>
> extern void warn_array_subscript_with_type_char (tree);
>
> /* In c-gimplify.c */
> extern void c_genericize (tree);
> extern int c_gimplify_expr (tree *, tree *, tree *);
> extern tree c_build_bind_expr (tree, tree);
>
> /* In c-pch.c */
1308a866,871
> extern void c_common_pch_pragma (cpp_reader *pfile, const char *);
> extern void c_common_print_pch_checksum (FILE *f);
>
> /* In *-checksum.c */
> extern const unsigned char executable_checksum[16];
>
1312,1313d874
< extern int c_estimate_num_insns (tree decl);
< extern bool c_decl_uninit (tree t);
1316,1320c877,881
< /* The following have been moved here from c-tree.h, since they're needed
< in the ObjC++ world, too. What is more, stub-objc.c could use a few
< prototypes. */
< extern tree lookup_interface (tree);
< extern tree is_class_name (tree);
---
> /* Objective-C / Objective-C++ entry points. */
>
> /* The following ObjC/ObjC++ functions are called by the C and/or C++
> front-ends; they all must have corresponding stubs in stub-objc.c. */
> extern tree objc_is_class_name (tree);
1323c884,888
< extern int objc_comptypes (tree, tree, int);
---
> extern int objc_is_reserved_word (tree);
> extern bool objc_compare_types (tree, tree, int, tree);
> extern void objc_volatilize_decl (tree);
> extern bool objc_type_quals_match (tree, tree);
> extern tree objc_rewrite_function_call (tree, tree);
1325,1326c890,936
< extern tree lookup_objc_ivar (tree);
< extern void *get_current_scope (void);
---
> extern tree objc_lookup_ivar (tree, tree);
> extern void objc_clear_super_receiver (void);
> extern int objc_is_public (tree, tree);
> extern tree objc_is_id (tree);
> extern void objc_declare_alias (tree, tree);
> extern void objc_declare_class (tree);
> extern void objc_declare_protocols (tree);
> extern tree objc_build_message_expr (tree);
> extern tree objc_finish_message_expr (tree, tree, tree);
> extern tree objc_build_selector_expr (tree);
> extern tree objc_build_protocol_expr (tree);
> extern tree objc_build_encode_expr (tree);
> extern tree objc_build_string_object (tree);
> extern tree objc_get_protocol_qualified_type (tree, tree);
> extern tree objc_get_class_reference (tree);
> extern tree objc_get_class_ivars (tree);
> extern void objc_start_class_interface (tree, tree, tree);
> extern void objc_start_category_interface (tree, tree, tree);
> extern void objc_start_protocol (tree, tree);
> extern void objc_continue_interface (void);
> extern void objc_finish_interface (void);
> extern void objc_start_class_implementation (tree, tree);
> extern void objc_start_category_implementation (tree, tree);
> extern void objc_continue_implementation (void);
> extern void objc_finish_implementation (void);
> extern void objc_set_visibility (int);
> extern void objc_set_method_type (enum tree_code);
> extern tree objc_build_method_signature (tree, tree, tree, bool);
> extern void objc_add_method_declaration (tree);
> extern void objc_start_method_definition (tree);
> extern void objc_finish_method_definition (tree);
> extern void objc_add_instance_variable (tree);
> extern tree objc_build_keyword_decl (tree, tree, tree);
> extern tree objc_build_throw_stmt (tree);
> extern void objc_begin_try_stmt (location_t, tree);
> extern tree objc_finish_try_stmt (void);
> extern void objc_begin_catch_clause (tree);
> extern void objc_finish_catch_clause (void);
> extern void objc_build_finally_clause (location_t, tree);
> extern tree objc_build_synchronized (location_t, tree, tree);
> extern int objc_static_init_needed_p (void);
> extern tree objc_generate_static_init_call (tree);
> extern tree objc_generate_write_barrier (tree, enum tree_code, tree);
>
> /* The following are provided by the C and C++ front-ends, and called by
> ObjC/ObjC++. */
> extern void *objc_get_current_scope (void);
1333a944
> extern bool check_missing_format_attribute (tree, tree);
1334a946,969
> /* In c-omp.c */
> extern tree c_finish_omp_master (tree);
> extern tree c_finish_omp_critical (tree, tree);
> extern tree c_finish_omp_ordered (tree);
> extern void c_finish_omp_barrier (void);
> extern tree c_finish_omp_atomic (enum tree_code, tree, tree);
> extern void c_finish_omp_flush (void);
> extern tree c_finish_omp_for (location_t, tree, tree, tree, tree, tree, tree);
> extern void c_split_parallel_clauses (tree, tree *, tree *);
> extern enum omp_clause_default_kind c_omp_predetermined_sharing (tree);
>
> /* Not in c-omp.c; provided by the front end. */
> extern bool c_omp_sharing_predetermined (tree);
> extern tree c_omp_remap_decl (tree, bool);
>
> /* In order for the format checking to accept the C frontend
> diagnostic framework extensions, you must include this file before
> toplev.h, not after. The C front end formats are a subset of those
> for C++, so they are the appropriate set to use in common code;
> cp-tree.h overrides this for C++. */
> #ifndef GCC_DIAG_STYLE
> #define GCC_DIAG_STYLE __gcc_cdiag__
> #endif
>