aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-eh.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-eh.cc')
-rw-r--r--gcc/tree-eh.cc16
1 files changed, 7 insertions, 9 deletions
diff --git a/gcc/tree-eh.cc b/gcc/tree-eh.cc
index 41cf57d..425323f 100644
--- a/gcc/tree-eh.cc
+++ b/gcc/tree-eh.cc
@@ -2319,7 +2319,7 @@ redirect_eh_edge_1 (edge edge_in, basic_block new_bb, bool change_region)
gcc_assert (old_lp_nr > 0);
old_lp = get_eh_landing_pad_from_number (old_lp_nr);
- throw_stmt = last_stmt (edge_in->src);
+ throw_stmt = *gsi_last_bb (edge_in->src);
gcc_checking_assert (lookup_stmt_eh_lp (throw_stmt) == old_lp_nr);
new_label = gimple_block_label (new_bb);
@@ -3515,11 +3515,9 @@ pass_lower_resx::execute (function *fun)
FOR_EACH_BB_FN (bb, fun)
{
- gimple *last = last_stmt (bb);
- if (last && is_gimple_resx (last))
+ if (gresx *last = safe_dyn_cast <gresx *> (*gsi_last_bb (bb)))
{
- dominance_invalidated |=
- lower_resx (bb, as_a <gresx *> (last), &mnt_map);
+ dominance_invalidated |= lower_resx (bb, last, &mnt_map);
any_rewritten = true;
}
}
@@ -3944,7 +3942,7 @@ pass_lower_eh_dispatch::execute (function *fun)
FOR_EACH_BB_FN (bb, fun)
{
- gimple *last = last_stmt (bb);
+ gimple *last = *gsi_last_bb (bb);
if (last == NULL)
continue;
if (gimple_code (last) == GIMPLE_EH_DISPATCH)
@@ -3979,7 +3977,7 @@ pass_lower_eh_dispatch::execute (function *fun)
for (int i = 0; i < rpo_n; ++i)
{
bb = BASIC_BLOCK_FOR_FN (fun, rpo[i]);
- gimple *last = last_stmt (bb);
+ gimple *last = *gsi_last_bb (bb);
if (last
&& gimple_code (last) == GIMPLE_RESX
&& !stmt_can_throw_external (fun, last))
@@ -4705,7 +4703,7 @@ cleanup_empty_eh (eh_landing_pad lp)
for (ei = ei_start (bb->preds); (e = ei_safe_edge (ei)); )
if (e->flags & EDGE_EH)
{
- gimple *stmt = last_stmt (e->src);
+ gimple *stmt = *gsi_last_bb (e->src);
remove_stmt_from_eh_lp (stmt);
remove_edge (e);
}
@@ -4721,7 +4719,7 @@ cleanup_empty_eh (eh_landing_pad lp)
for (ei = ei_start (bb->preds); (e = ei_safe_edge (ei)); )
if (e->flags & EDGE_EH)
{
- gimple *stmt = last_stmt (e->src);
+ gimple *stmt = *gsi_last_bb (e->src);
remove_stmt_from_eh_lp (stmt);
add_stmt_to_eh_lp (stmt, new_lp_nr);
remove_edge (e);