DECL_PRETTY_FUNCTION_P (in VAR_DECL)
NEW_FOR_SCOPE_P (in FOR_STMT)
ASM_INPUT_P (in ASM_STMT)
+ STMT_EXPR_NO_SCOPE (in STMT_EXPR)
1: C_DECLARED_LABEL_FLAG (in LABEL_DECL)
STMT_IS_FULL_EXPR_P (in _STMT)
2: STMT_LINENO_FOR_FN_P (in _STMT)
RID_VOLATILE, RID_SIGNED, RID_AUTO, RID_RESTRICT,
/* C extensions */
- RID_BOUNDED, RID_UNBOUNDED, RID_COMPLEX,
+ RID_BOUNDED, RID_UNBOUNDED, RID_COMPLEX, RID_THREAD,
/* C++ */
RID_FRIEND, RID_VIRTUAL, RID_EXPLICIT, RID_EXPORT, RID_MUTABLE,
/* 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;
/* In C++, Non-zero if we should treat statements as full
expressions. In particular, this variable is no-zero if at the
end of a statement we should destroy any temporaries created
#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
extern void (*lang_expand_stmt) PARAMS ((tree));
extern void (*lang_expand_decl_stmt) PARAMS ((tree));
extern void (*lang_expand_function_end) PARAMS ((void));
+extern tree gettags PARAMS ((void));
/* Callback that determines if it's ok for a function to have no
noreturn attribute. */
extern int (*lang_missing_noreturn_ok_p) PARAMS ((tree));
+extern int yyparse PARAMS ((void));
+extern void free_parser_stacks PARAMS ((void));
extern stmt_tree current_stmt_tree PARAMS ((void));
extern tree *current_scope_stmt_stack PARAMS ((void));
extern void mark_stmt_tree PARAMS ((void *));
extern void shadow_warning PARAMS ((const char *,
tree, tree));
+extern tree c_begin_if_stmt PARAMS ((void));
+extern tree c_begin_while_stmt PARAMS ((void));
+extern void c_finish_while_stmt_cond PARAMS ((tree, tree));
+
/* Extra information associated with a DECL. Other C dialects extend
this structure in various ways. The C front-end only uses this
extern c_language_kind c_language;
+/* Nonzero if prepreprocessing only. */
+extern int flag_preprocess_only;
+
+/* Nonzero if an ISO standard was selected. It rejects macros in the
+ user's namespace. */
+extern int flag_iso;
+
+/* Nonzero if -undef was given. It suppresses target built-in macros
+ and assertions. */
+extern int flag_undef;
+
/* Nonzero means give string constants the type `const char *', rather
than `char *'. */
extern int flag_short_wchar;
+/* Nonzero means warn about use of multicharacter literals. */
+extern int warn_multichar;
+
/* Warn about *printf or *scanf format/argument anomalies. */
extern int warn_format;
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;
extern int warn_format_security;
+/* Warn about NULL being passed to argument slots marked as requiring
+ non-NULL. */
+
+extern int warn_nonnull;
+
/* Warn about possible violations of sequence point rules. */
extern int warn_sequence_point;
/* Nonzero means to warn about compile-time division by zero. */
extern int warn_div_by_zero;
-/* Nonzero means do some things the same way PCC does. */
-
-extern int flag_traditional;
-
/* Nonzero means enable C89 Amendment 1 features. */
extern int flag_isoc94;
what operator was specified for it. */
#define C_EXP_ORIGINAL_CODE(exp) ((enum tree_code) TREE_COMPLEXITY (exp))
+/* Attribute table common to the C front ends. */
+extern const struct attribute_spec c_common_attribute_table[];
+extern const struct attribute_spec c_common_format_attribute_table[];
+
/* Pointer to function to lazily generate the VAR_DECL for __FUNCTION__ etc.
ID is the identifier to use, NAME is the string.
TYPE_DEP indicates whether it depends on type of the function or not
extern tree fname_decl PARAMS ((unsigned, tree));
extern const char *fname_string PARAMS ((unsigned));
+extern void check_function_arguments PARAMS ((tree, tree));
+extern void check_function_arguments_recurse PARAMS ((void (*) (void *,
+ tree,
+ unsigned HOST_WIDE_INT),
+ void *, tree,
+ unsigned HOST_WIDE_INT));
extern void check_function_format PARAMS ((int *, tree, tree));
extern void set_Wformat PARAMS ((int));
extern tree handle_format_attribute PARAMS ((tree *, tree, tree,
extern tree handle_format_arg_attribute PARAMS ((tree *, tree, tree,
int, bool *));
extern void c_common_insert_default_attributes PARAMS ((tree));
+extern tree c_common_type_for_mode PARAMS ((enum machine_mode,
+ int));
+extern tree c_common_type_for_size PARAMS ((unsigned int, int));
+extern tree c_common_unsigned_type PARAMS ((tree));
+extern tree c_common_signed_type PARAMS ((tree));
+extern tree c_common_signed_or_unsigned_type PARAMS ((int, tree));
+extern tree c_common_truthvalue_conversion PARAMS ((tree));
extern void c_apply_type_quals_to_decl PARAMS ((int, tree));
extern tree c_sizeof PARAMS ((tree));
extern tree c_alignof PARAMS ((tree));
NOP_EXPR is used as a special case (see truthvalue_conversion). */
extern void binary_op_error PARAMS ((enum tree_code));
extern tree c_expand_expr_stmt PARAMS ((tree));
-extern void c_expand_start_cond PARAMS ((tree, int));
+extern void c_expand_start_cond PARAMS ((tree, int, tree));
extern void c_finish_then PARAMS ((void));
extern void c_expand_start_else PARAMS ((void));
-extern void c_finish_else PARAMS ((void));
+extern void c_finish_else PARAMS ((void));
extern void c_expand_end_cond PARAMS ((void));
/* Validate the expression after `case' and apply default promotions. */
extern tree check_case_value PARAMS ((tree));
-/* Concatenate a list of STRING_CST nodes into one STRING_CST. */
-extern tree combine_strings PARAMS ((tree));
+extern tree fix_string_type PARAMS ((tree));
+struct varray_head_tag;
+extern tree combine_strings PARAMS ((struct varray_head_tag *));
extern void constant_expression_warning PARAMS ((tree));
extern tree convert_and_check PARAMS ((tree, tree));
extern void overflow_warning PARAMS ((tree));
and, if so, perhaps change them both back to their original type. */
extern tree shorten_compare PARAMS ((tree *, tree *, tree *, enum tree_code *));
+extern tree pointer_int_sum PARAMS ((enum tree_code, tree, tree));
extern unsigned int min_precision PARAMS ((tree, int));
/* Add qualifiers to a type, in the fashion for C. */
extern void c_common_post_options PARAMS ((void));
extern const char *c_common_init PARAMS ((const char *));
extern void c_common_finish PARAMS ((void));
+extern void c_common_parse_file PARAMS ((int));
extern HOST_WIDE_INT c_common_get_alias_set PARAMS ((tree));
extern bool c_promoting_integer_type_p PARAMS ((tree));
extern int self_promoting_args_p PARAMS ((tree));
-extern tree simple_type_promotes_to PARAMS ((tree));
extern tree strip_array_types PARAMS ((tree));
/* These macros provide convenient access to the various _STMT nodes. */
#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 and body
+/* 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. */
/* 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))
+
/* 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)
#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. */
#undef DEFTREECODE
-extern void add_c_tree_codes PARAMS ((void));
extern void genrtl_do_pushlevel PARAMS ((void));
extern void genrtl_goto_stmt PARAMS ((tree));
extern void genrtl_expr_stmt PARAMS ((tree));
-extern void genrtl_expr_stmt_value PARAMS ((tree, int));
+extern void genrtl_expr_stmt_value PARAMS ((tree, int, int));
extern void genrtl_decl_stmt PARAMS ((tree));
extern void genrtl_if_stmt PARAMS ((tree));
extern void genrtl_while_stmt PARAMS ((tree));
extern void genrtl_asm_stmt PARAMS ((tree, tree,
tree, tree,
tree, int));
-extern void genrtl_decl_cleanup PARAMS ((tree, tree));
+extern void genrtl_decl_cleanup PARAMS ((tree));
extern int stmts_are_full_exprs_p PARAMS ((void));
extern int anon_aggr_type_p PARAMS ((tree));
different implementations. Used in c-common.c. */
extern tree lookup_label PARAMS ((tree));
-/* enum expand_modified is in expr.h, as is the macro below. */
-
-#ifdef QUEUED_VAR
-extern rtx c_expand_expr PARAMS ((tree, rtx, enum machine_mode,
- enum expand_modifier));
-#endif
+extern rtx c_expand_expr PARAMS ((tree, rtx,
+ enum machine_mode,
+ int));
extern int c_safe_from_p PARAMS ((rtx, tree));
extern int c_staticp PARAMS ((tree));
-extern int c_unsafe_for_reeval PARAMS ((tree));
+extern int c_common_unsafe_for_reeval PARAMS ((tree));
+
+extern const char *init_c_lex PARAMS ((const char *));
/* Information recorded about each file examined during compilation. */