From: Richard Henderson Date: Thu, 10 Sep 2009 18:28:18 +0000 (-0700) Subject: tree-cfg.c (gimple_redirect_edge_and_branch): Do gimple_try_redirect_by_replacing_jum... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;ds=sidebyside;h=1c061be54199048f795df9cc1c18583609bd4121;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index edc610f9276..73f7c2e1e95 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2009-09-10 Richard Henderson + * 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 dest_prev if the edge is complex. diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 0718cfed783..565330591a4 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -5045,16 +5045,19 @@ gimple_redirect_edge_and_branch (edge e, basic_block dest) if (e->flags & EDGE_ABNORMAL) return NULL; - if (e->src != ENTRY_BLOCK_PTR - && (ret = gimple_try_redirect_by_replacing_jump (e, dest))) - return ret; - if (e->dest == dest) return NULL; if (e->flags & EDGE_EH) 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); stmt = gsi_end_p (gsi) ? NULL : gsi_stmt (gsi);