aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2009-09-10 11:28:18 -0700
committerRichard Henderson <rth@gcc.gnu.org>2009-09-10 11:28:18 -0700
commit1c061be54199048f795df9cc1c18583609bd4121 (patch)
treedf57df427ce4c00a9b7fa291d48148fe2505c5e2 /gcc
parent88e24a5ab99c76c81f32628af49e0a39147c95e8 (diff)
downloadgcc-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')
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/tree-cfg.c11
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 <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
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);