From 7055eea1d9c42c214a258c2c662dbd4887ae259e Mon Sep 17 00:00:00 2001 From: rth Date: Thu, 10 Sep 2009 18:28:18 +0000 Subject: [PATCH] * tree-cfg.c (gimple_redirect_edge_and_branch): Do gimple_try_redirect_by_replacing_jump test after no-op and EH tests. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151607 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 3 +++ gcc/tree-cfg.c | 11 +++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index edc610f..73f7c2e 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 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); -- 2.7.4