/* Definitions for c-common.c.
Copyright (C) 1987, 1993, 1994, 1995, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of GCC.
/* Information about a statement tree. */
struct stmt_tree_s GTY(()) {
- /* The current statment list being collected. */
+ /* The current statement list being collected. */
tree x_cur_stmt_list;
/* In C++, Nonzero if we should treat statements as full
struct stmt_tree_s x_stmt_tree;
};
-/* When building a statement-tree, this is the current statment list
+/* When building a statement-tree, this is the current statement list
being collected. It's TREE_CHAIN is a back-pointer to the previous
- statment list. */
+ statement list. */
#define cur_stmt_list (current_stmt_tree ()->x_cur_stmt_list)
/* Language-specific hooks. */
-extern void (*lang_expand_function_end) (void);
-
/* Callback that determines if it's ok for a function to have no
noreturn attribute. */
extern int (*lang_missing_noreturn_ok_p) (tree);
extern tree add_stmt (tree);
extern void push_cleanup (tree, tree, bool);
-extern tree walk_stmt_tree (tree *, walk_tree_fn, void *);
extern int c_expand_decl (tree);
extern int field_decl_cmp (const void *, const void *);
/* Nonzero means to treat bitfields as signed unless they say `unsigned'. */
extern int flag_signed_bitfields;
-extern int explicit_flag_signed_bitfields;
/* Nonzero means warn about deprecated conversion from string constant to
`char *'. */
frontends. */
extern void c_common_nodes_and_builtins (void);
+extern void set_builtin_user_assembler_name (tree decl, const char *asmspec);
+
extern void disable_builtin_function (const char *);
extern tree build_va_arg (tree, tree);
extern int self_promoting_args_p (tree);
extern tree strip_array_types (tree);
extern tree strip_pointer_operator (tree);
+extern HOST_WIDE_INT c_common_to_target_charset (HOST_WIDE_INT);
/* This is the basic parsing function. */
extern void c_parse_file (void);
/* This is misnamed, it actually performs end-of-compilation processing. */
extern void finish_file (void);
+
/* These macros provide convenient access to the various _STMT nodes. */
/* Nonzero if this statement should be considered a full-expression,
#define FOR_EXPR(NODE) TREE_OPERAND (FOR_STMT_CHECK (NODE), 2)
#define FOR_BODY(NODE) TREE_OPERAND (FOR_STMT_CHECK (NODE), 3)
-#define SWITCH_TYPE(NODE) TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 2)
+#define SWITCH_STMT_COND(NODE) TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 0)
+#define SWITCH_STMT_BODY(NODE) TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 1)
+#define SWITCH_STMT_TYPE(NODE) TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 2)
/* STMT_EXPR accessor. */
#define STMT_EXPR_STMT(NODE) TREE_OPERAND (STMT_EXPR_CHECK (NODE), 0)
extern tree build_unary_op (enum tree_code, tree, int);
extern tree build_binary_op (enum tree_code, tree, tree, int);
-extern int lvalue_p (tree);
-extern tree default_conversion (tree);
+extern tree perform_integral_promotions (tree);
/* Given two integer or real types, return the type for their sum.
Given two compatible ANSI C types, returns the merged type. */
extern tree c_add_case_label (splay_tree, tree, tree, tree, tree);
extern void c_do_switch_warnings (splay_tree, tree);
+extern void c_do_switch_expr_warnings (splay_tree, tree);
extern tree build_function_call (tree, tree);
extern tree c_staticp (tree);
-extern int c_common_unsafe_for_reeval (tree);
-
extern void init_c_lex (void);
extern void c_cpp_builtins (cpp_reader *);
extern tree fold_offsetof (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);
+
/* In c-gimplify.c */
extern void c_genericize (tree);
extern int c_gimplify_expr (tree *, tree *, tree *);