diff options
author | Nathan Froyd <froydnj@codesourcery.com> | 2011-05-06 03:47:57 +0000 |
---|---|---|
committer | Nathan Froyd <froydnj@gcc.gnu.org> | 2011-05-06 03:47:57 +0000 |
commit | 3d528853ba1106b3cbd6eca4316ab2825416b9a6 (patch) | |
tree | 039393d181bb08f19b86318385c11bae2f698e2d /gcc/tree-eh.c | |
parent | d7d058c58a02241c63e6c3cc0099bc5d7f68a153 (diff) | |
download | gcc-3d528853ba1106b3cbd6eca4316ab2825416b9a6.zip gcc-3d528853ba1106b3cbd6eca4316ab2825416b9a6.tar.gz gcc-3d528853ba1106b3cbd6eca4316ab2825416b9a6.tar.bz2 |
generalize build_case_label to the rest of the compiler
generalize build_case_label to the rest of the compiler
gcc/ada/
* gcc-interface/trans.c (Case_Statement_to_gnu): Call
build_case_label.
gcc/
* except.c (sjlj_emit_dispatch_table): Call build_case_label.
* gimplify.c (gimplify_switch_expr): Likewise.
* omp-low.c (expand_omp_sections): Likewise.
* tree-eh.c (lower_try_finally_switch): Likewise.
(lower_eh_dispatch): Likewise.
* tree.h (build_case_label): Declare.
* tree.c (build_case_label): Define.
gcc/c-family/
* c-common.c (c_add_case_label): Omit the loc argument to
build_case_label.
* c-common.h (build_case_label): Remove.
* c-semantics.c (build_case_label): Remove.
gcc/cp/
* decl.c (finish_case_label): Omit the loc argument to
build_case_label.
gcc/fortran/
* trans-decl.c (gfc_trans_entry_master_switch): Call build_case_label.
* trans-io.c (add_case): Likewise.
* trans-stmt.c (gfc_trans_integer_select): Likewise.
(gfc_trans_character_select): Likewise.
gcc/go/
* go-gcc.cc (Gcc_backend::switch_statement): Call build_case_label.
gcc/java/
* expr.c (expand_java_switch): Call build_case_label.
(expand_java_add_case): Likewise.
From-SVN: r173467
Diffstat (limited to 'gcc/tree-eh.c')
-rw-r--r-- | gcc/tree-eh.c | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c index ceb2ff4..cd6c428 100644 --- a/gcc/tree-eh.c +++ b/gcc/tree-eh.c @@ -1340,9 +1340,9 @@ lower_try_finally_switch (struct leh_state *state, struct leh_tf_state *tf) fallthru_index)); gimple_seq_add_stmt (&tf->top_p_seq, x); - last_case = build3 (CASE_LABEL_EXPR, void_type_node, - build_int_cst (integer_type_node, fallthru_index), - NULL, create_artificial_label (tf_loc)); + tmp = build_int_cst (integer_type_node, fallthru_index); + last_case = build_case_label (tmp, NULL, + create_artificial_label (tf_loc)); VEC_quick_push (tree, case_label_vec, last_case); last_case_index++; @@ -1365,9 +1365,9 @@ lower_try_finally_switch (struct leh_state *state, struct leh_tf_state *tf) x = gimple_build_goto (finally_label); gimple_seq_add_stmt (&eh_seq, x); - last_case = build3 (CASE_LABEL_EXPR, void_type_node, - build_int_cst (integer_type_node, eh_index), - NULL, create_artificial_label (tf_loc)); + tmp = build_int_cst (integer_type_node, eh_index); + last_case = build_case_label (tmp, NULL, + create_artificial_label (tf_loc)); VEC_quick_push (tree, case_label_vec, last_case); last_case_index++; @@ -1419,9 +1419,9 @@ lower_try_finally_switch (struct leh_state *state, struct leh_tf_state *tf) { tree case_lab; void **slot; - case_lab = build3 (CASE_LABEL_EXPR, void_type_node, - build_int_cst (integer_type_node, switch_id), - NULL, create_artificial_label (tf_loc)); + tmp = build_int_cst (integer_type_node, switch_id); + case_lab = build_case_label (tmp, NULL, + create_artificial_label (tf_loc)); /* We store the cont_stmt in the pointer map, so that we can recover it in the loop below. */ if (!cont_map) @@ -3132,8 +3132,8 @@ lower_eh_dispatch (basic_block src, gimple stmt) blocks at the end of this pass. */ if (! pointer_set_contains (seen_values, TREE_VALUE (flt_node))) { - tree t = build3 (CASE_LABEL_EXPR, void_type_node, - TREE_VALUE (flt_node), NULL, lab); + tree t = build_case_label (TREE_VALUE (flt_node), + NULL, lab); VEC_safe_push (tree, heap, labels, t); pointer_set_insert (seen_values, TREE_VALUE (flt_node)); have_label = true; @@ -3181,8 +3181,7 @@ lower_eh_dispatch (basic_block src, gimple stmt) gsi_insert_before (&gsi, x, GSI_SAME_STMT); /* Turn the default label into a default case. */ - default_label = build3 (CASE_LABEL_EXPR, void_type_node, - NULL, NULL, default_label); + default_label = build_case_label (NULL, NULL, default_label); sort_case_labels (labels); x = gimple_build_switch_vec (filter, default_label, labels); |