diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-24 23:12:30 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-24 23:12:30 +0000 |
commit | 0375a275218853ad9759bdfff552dd4cbb7609aa (patch) | |
tree | 1fab0ddb0ef43b779ede7dfbfbd2254c84c942e4 /gcc/c-tree.h | |
parent | efa75d925ee30d4ee6cd9e9b80519f28ba243344 (diff) | |
download | gcc-0375a275218853ad9759bdfff552dd4cbb7609aa.tar.gz |
* c-decl.c (c_in_iteration_stmt, c_in_case_stmt): Remove.
(c_break_label, c_cont_label): New.
(start_function): Update initializations.
(c_push_function_context): Update saves.
(c_pop_function_context): Update restores.
* c-parse.in: Update expected conflicts.
(stmt_count, compstmt_count): Remove. Remove all updates.
(if_prefix, simple_if, do_stmt_start): Remove.
(lineno_labeled_stmt): Remove.
(lineno_labels): New.
(c99_block_lineno_labeled_stmt): Use it.
(lineno_stmt, lineno_label): Don't clear EXPR_LOCUS before calling
annotate_with_locus.
(select_or_iter_stmt): Replace by ...
(condition, if_statement_1, if_statement_2, if_statement,
start_break, start_continue, while_statement, do_statement,
for_cond_expr, for_incr_expr, for_statement, switch_statement): New.
(stmt): Split out ...
(stmt_nocomp): ... this. Use c_finish_bc_stmt, c_finish_goto_label,
c_finish_goto_ptr.
* c-semantics.c (add_stmt): Don't add line numbers to labels.
* c-tree.h: Update prototypes.
(struct language_function): Remove x_in_iteration_stmt, x_in_case_stmt;
add x_break_label, x_cont_label, x_switch_stack.
(c_switch_stack): Declare.
* c-typeck.c (c_finish_goto_label, c_finish_goto_ptr): New.
(c_finish_return): Return the statement.
(c_switch_stack): Rename from switch_stack; export.
(if_elt, if_stack, if_stack_space, if_stack_pointer): Remove.
(c_begin_if_stmt, c_finish_if_cond, c_finish_then, c_begin_else,
c_finish_else): Remove.
(c_finish_if_stmt): Rewrite to perform the entire operation.
(c_begin_while_stmt, c_finish_while_stmt_cond, c_finish_while_stmt,
c_begin_for_stmt, c_finish_for_stmt_init, c_finish_for_stmt_cond,
c_finish_for_stmt_incr, c_finish_for_stmt): Remove.
(c_finish_loop): New.
(c_finish_bc_stmt): New.
(c_finish_expr_stmt): Return the statement. Split out...
(c_process_expr_stmt): ... this. Don't add locus to error marks.
* gimplify.c (gimplify_cond_expr): Accept NULL type statements.
* tree-gimple.c (is_gimple_stmt): Likewise.
* tree-pretty-print.c (dump_generic_node <COND_EXPR>): Likewise.
(print_struct_decl): Delete empty compound statement.
* objc/objc-act.c (objc_build_throw_stmt): Return the statement.
* objc/objc-act.h: Update decl.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@83620 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/c-tree.h')
-rw-r--r-- | gcc/c-tree.h | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/gcc/c-tree.h b/gcc/c-tree.h index 66691eba299..4d99c409f3b 100644 --- a/gcc/c-tree.h +++ b/gcc/c-tree.h @@ -126,13 +126,14 @@ struct lang_type GTY(()) struct language_function GTY(()) { struct c_language_function base; + tree x_break_label; + tree x_cont_label; + struct c_switch * GTY((skip)) x_switch_stack; int returns_value; int returns_null; int returns_abnormally; int warn_about_return_type; int extern_inline; - int x_in_iteration_stmt; - int x_in_case_stmt; }; @@ -143,8 +144,8 @@ extern void c_parse_init (void); extern void gen_aux_info_record (tree, int, int, int); /* in c-decl.c */ -extern int c_in_iteration_stmt; -extern int c_in_case_stmt; +extern tree c_break_label; +extern tree c_cont_label; extern int global_bindings_p (void); extern void push_scope (void); @@ -212,6 +213,7 @@ extern bool c_warn_unused_global_decl (tree); #define c_sizeof_nowarn(T) c_sizeof_or_alignof_type (T, SIZEOF_EXPR, 0) /* in c-typeck.c */ +extern struct c_switch *c_switch_stack; extern tree require_complete_type (tree); extern int same_translation_unit_p (tree, tree); @@ -254,24 +256,16 @@ extern tree c_convert_parm_for_inlining (tree, tree, tree, int); extern int c_types_compatible_p (tree, tree); extern tree c_begin_compound_stmt (bool); extern tree c_end_compound_stmt (tree, bool); -extern void c_begin_if_stmt (void); -extern void c_finish_if_cond (tree, int, int); -extern void c_finish_then (tree); -extern void c_begin_else (int); -extern void c_finish_else (tree); -extern void c_finish_if_stmt (int); -extern tree c_begin_while_stmt (void); -extern void c_finish_while_stmt_cond (tree, tree); -extern void c_finish_while_stmt (tree, tree); -extern tree c_begin_for_stmt (void); -extern void c_finish_for_stmt_init (tree); -extern void c_finish_for_stmt_cond (tree, tree); -extern void c_finish_for_stmt_incr (tree, tree); -extern void c_finish_for_stmt (tree, tree); +extern void c_finish_if_stmt (location_t, tree, tree, tree, bool); +extern void c_finish_loop (location_t, tree, tree, tree, tree, tree, bool); extern tree c_begin_stmt_expr (void); extern tree c_finish_stmt_expr (tree); -extern void c_finish_expr_stmt (tree); -extern void c_finish_return (tree); +extern tree c_process_expr_stmt (tree); +extern tree c_finish_expr_stmt (tree); +extern tree c_finish_return (tree); +extern tree c_finish_bc_stmt (tree *, bool); +extern tree c_finish_goto_label (tree); +extern tree c_finish_goto_ptr (tree); extern tree build_offsetof (tree, tree); /* Set to 0 at beginning of a function definition, set to 1 if |