diff options
author | Richard Henderson <rth@redhat.com> | 2009-09-10 11:28:18 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2009-09-10 11:28:18 -0700 |
commit | 1c061be54199048f795df9cc1c18583609bd4121 (patch) | |
tree | df57df427ce4c00a9b7fa291d48148fe2505c5e2 /gcc/tree-cfg.c | |
parent | 88e24a5ab99c76c81f32628af49e0a39147c95e8 (diff) | |
download | gcc-1c061be54199048f795df9cc1c18583609bd4121.zip gcc-1c061be54199048f795df9cc1c18583609bd4121.tar.gz gcc-1c061be54199048f795df9cc1c18583609bd4121.tar.bz2 |
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
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r-- | gcc/tree-cfg.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 0718cfe..5653305 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); |