Commit 1c061be5 by Richard Henderson Committed by Richard Henderson

tree-cfg.c (gimple_redirect_edge_and_branch): Do…

tree-cfg.c (gimple_redirect_edge_and_branch): Do gimple_try_redirect_by_replacing_jump test after no-op and EH tests.

* tree-cfg.c (gimple_redirect_edge_and_branch): Do
        gimple_try_redirect_by_replacing_jump test after no-op and EH tests.

From-SVN: r151607
parent 88e24a5a
2009-09-10 Richard Henderson <rth@redhat.com> 2009-09-10 Richard Henderson <rth@redhat.com>
* tree-cfg.c (gimple_redirect_edge_and_branch): Do
gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
* tree-cfg.c (split_edge_bb_loc): Don't disallow placement at * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
dest_prev if the edge is complex. dest_prev if the edge is complex.
......
...@@ -5045,16 +5045,19 @@ gimple_redirect_edge_and_branch (edge e, basic_block dest) ...@@ -5045,16 +5045,19 @@ gimple_redirect_edge_and_branch (edge e, basic_block dest)
if (e->flags & EDGE_ABNORMAL) if (e->flags & EDGE_ABNORMAL)
return NULL; return NULL;
if (e->src != ENTRY_BLOCK_PTR
&& (ret = gimple_try_redirect_by_replacing_jump (e, dest)))
return ret;
if (e->dest == dest) if (e->dest == dest)
return NULL; return NULL;
if (e->flags & EDGE_EH) if (e->flags & EDGE_EH)
return redirect_eh_edge (e, dest); return redirect_eh_edge (e, dest);
if (e->src != ENTRY_BLOCK_PTR)
{
ret = gimple_try_redirect_by_replacing_jump (e, dest);
if (ret)
return ret;
}
gsi = gsi_last_bb (bb); gsi = gsi_last_bb (bb);
stmt = gsi_end_p (gsi) ? NULL : gsi_stmt (gsi); stmt = gsi_end_p (gsi) ? NULL : gsi_stmt (gsi);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment