diff options
author | Martin Liska <mliska@suse.cz> | 2018-08-27 14:17:19 +0200 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2018-08-27 12:17:19 +0000 |
commit | 61ff5d6f4ed5000ee427e054ee803bc8f5535bdd (patch) | |
tree | 258d294d1bd789f941b4e62269851da44fa8a99c /gcc/tree-eh.c | |
parent | 78ea9abc2018243af7f7ada6135144ac90c6ad27 (diff) | |
download | gcc-61ff5d6f4ed5000ee427e054ee803bc8f5535bdd.zip gcc-61ff5d6f4ed5000ee427e054ee803bc8f5535bdd.tar.gz gcc-61ff5d6f4ed5000ee427e054ee803bc8f5535bdd.tar.bz2 |
Add new gswitch related functions into tree-cfg.c.
2018-08-27 Martin Liska <mliska@suse.cz>
* cfgexpand.c (expand_asm_stmt): Use label_to_block and pass
cfun argument explicitly.
* gimple-pretty-print.c (dump_gimple_switch): Likewise.
* hsa-gen.c (gen_hsa_insns_for_switch_stmt): Use new
function gimple_switch_default_bb.
(convert_switch_statements):
(expand_builtins):
* ipa-fnsummary.c (set_switch_stmt_execution_predicate):
* stmt.c (label_to_block_fn): Use label_to_block and pass
cfun argument explicitly and use gimple_switch_label_bb.
(expand_case): Likewise.
* tree-cfg.c (lower_phi_internal_fn): Use label_to_block and pass
cfun argument explicitly. Likewise.
(make_edges_bb): Likewise.
(make_cond_expr_edges): Likewise.
(get_cases_for_edge): Likewise.
(make_gimple_switch_edges): Likewise.
(label_to_block_fn): Likewise.
(label_to_block): Likewise.
(make_goto_expr_edges): Likewise.
(make_gimple_asm_edges): Likewise.
(main_block_label): Likewise.
(group_case_labels_stmt): Likewise.
(find_taken_edge_computed_goto): Likewise.
(find_taken_edge_switch_expr): Likewise.
(gimple_verify_flow_info): Likewise.
(gimple_redirect_edge_and_branch): Likewise.
(gimple_switch_label_bb): New function.
(gimple_switch_default_bb): Likewise.
(gimple_switch_edge): Likewise.
(gimple_switch_default_edge): Likewise.
* tree-cfg.h (label_to_block_fn): Remove and replace ...
(label_to_block): ... with this.
(gimple_switch_label_bb): New.
(gimple_switch_default_bb): Likewise.
(gimple_switch_edge): Likewise.
(gimple_switch_default_edge): Likewise.
* tree-cfgcleanup.c (convert_single_case_switch): Use
new gimple functions and pass new argument to label_to_block.
(cleanup_control_flow_bb):
* tree-eh.c (make_eh_dispatch_edges): Use label_to_block and pass
cfun argument explicitly.
(make_eh_edges): Likewise.
(redirect_eh_dispatch_edge): Likewise.
(lower_resx): Likewise.
(lower_eh_dispatch): Likewise.
(maybe_remove_unreachable_handlers): Likewise.
(unsplit_eh): Likewise.
(cleanup_empty_eh): Likewise.
(verify_eh_edges): Likewise.
(verify_eh_dispatch_edge): Likewise.
* tree-ssa-dom.c (record_edge_info): Likewise.
* tree-ssa-forwprop.c (simplify_gimple_switch_label_vec): Likewise.
* tree-ssa-threadedge.c (thread_around_empty_blocks): Likewise.
(thread_through_normal_block): Likewise.
* tree-ssa-uncprop.c (associate_equivalences_with_edges): Likewise.
* tree-ssa-uninit.c (convert_control_dep_chain_into_preds):
* tree-switch-conversion.c (switch_conversion::collect): Use new
gimple functions.
(switch_conversion::check_final_bb): Likewise.
(switch_conversion::gather_default_values): Pass new argument
to label_to_block.
(switch_conversion::build_constructors): Likewise.
(switch_decision_tree::compute_cases_per_edge): Use new
gimple_switch_edge function.
(switch_decision_tree::analyze_switch_statement): Pass new argument
to label_to_block.
(switch_decision_tree::try_switch_expansion): Use
gimple_switch_default_edge.
* tree-vrp.c (find_switch_asserts): Pass new argument
to label_to_block.
* vr-values.c (vr_values::vrp_visit_switch_stmt): Likewise.
(vr_values::simplify_switch_using_ranges): Likewise.
From-SVN: r263876
Diffstat (limited to 'gcc/tree-eh.c')
-rw-r--r-- | gcc/tree-eh.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c index f367040..20e2db9 100644 --- a/gcc/tree-eh.c +++ b/gcc/tree-eh.c @@ -2231,7 +2231,7 @@ make_eh_dispatch_edges (geh_dispatch *stmt) case ERT_TRY: for (c = r->u.eh_try.first_catch; c ; c = c->next_catch) { - dst = label_to_block (c->label); + dst = label_to_block (cfun, c->label); make_edge (src, dst, 0); /* A catch-all handler doesn't have a fallthru. */ @@ -2241,7 +2241,7 @@ make_eh_dispatch_edges (geh_dispatch *stmt) break; case ERT_ALLOWED_EXCEPTIONS: - dst = label_to_block (r->u.allowed.label); + dst = label_to_block (cfun, r->u.allowed.label); make_edge (src, dst, 0); break; @@ -2270,7 +2270,7 @@ make_eh_edges (gimple *stmt) gcc_assert (lp != NULL); src = gimple_bb (stmt); - dst = label_to_block (lp->post_landing_pad); + dst = label_to_block (cfun, lp->post_landing_pad); make_edge (src, dst, EDGE_EH); } @@ -2389,7 +2389,7 @@ redirect_eh_dispatch_edge (geh_dispatch *stmt, edge e, basic_block new_bb) case ERT_TRY: for (c = r->u.eh_try.first_catch; c ; c = c->next_catch) { - old_bb = label_to_block (c->label); + old_bb = label_to_block (cfun, c->label); if (old_bb == e->dest) { c->label = new_lab; @@ -2399,7 +2399,7 @@ redirect_eh_dispatch_edge (geh_dispatch *stmt, edge e, basic_block new_bb) break; case ERT_ALLOWED_EXCEPTIONS: - old_bb = label_to_block (r->u.allowed.label); + old_bb = label_to_block (cfun, r->u.allowed.label); gcc_assert (old_bb == e->dest); r->u.allowed.label = new_lab; any_changed = true; @@ -3329,7 +3329,7 @@ lower_resx (basic_block bb, gresx *stmt, else { lab = *slot; - new_bb = label_to_block (lab); + new_bb = label_to_block (cfun, lab); } gcc_assert (EDGE_COUNT (bb->succs) == 0); @@ -3733,7 +3733,7 @@ lower_eh_dispatch (basic_block src, geh_dispatch *stmt) while (tp_node); if (! have_label) { - remove_edge (find_edge (src, label_to_block (lab))); + remove_edge (find_edge (src, label_to_block (cfun, lab))); redirected = true; } } @@ -4046,7 +4046,7 @@ maybe_remove_unreachable_handlers (void) FOR_EACH_VEC_SAFE_ELT (cfun->eh->lp_array, i, lp) if (lp && lp->post_landing_pad) { - if (label_to_block (lp->post_landing_pad) == NULL) + if (label_to_block (cfun, lp->post_landing_pad) == NULL) { remove_unreachable_handlers (); return; @@ -4110,7 +4110,7 @@ remove_unreachable_handlers_no_lp (void) static bool unsplit_eh (eh_landing_pad lp) { - basic_block bb = label_to_block (lp->post_landing_pad); + basic_block bb = label_to_block (cfun, lp->post_landing_pad); gimple_stmt_iterator gsi; edge e_in, e_out; @@ -4475,7 +4475,7 @@ infinite_empty_loop_p (edge e_first) static bool cleanup_empty_eh (eh_landing_pad lp) { - basic_block bb = label_to_block (lp->post_landing_pad); + basic_block bb = label_to_block (cfun, lp->post_landing_pad); gimple_stmt_iterator gsi; gimple *resx; eh_region new_region; @@ -4795,7 +4795,7 @@ verify_eh_edges (gimple *stmt) return true; } - if (eh_edge->dest != label_to_block (lp->post_landing_pad)) + if (eh_edge->dest != label_to_block (cfun, lp->post_landing_pad)) { error ("Incorrect EH edge %i->%i", bb->index, eh_edge->dest->index); return true; @@ -4827,7 +4827,7 @@ verify_eh_dispatch_edge (geh_dispatch *stmt) case ERT_TRY: for (c = r->u.eh_try.first_catch; c ; c = c->next_catch) { - dst = label_to_block (c->label); + dst = label_to_block (cfun, c->label); e = find_edge (src, dst); if (e == NULL) { @@ -4846,7 +4846,7 @@ verify_eh_dispatch_edge (geh_dispatch *stmt) break; case ERT_ALLOWED_EXCEPTIONS: - dst = label_to_block (r->u.allowed.label); + dst = label_to_block (cfun, r->u.allowed.label); e = find_edge (src, dst); if (e == NULL) { |