* tree-cfg.c (gimple_redirect_edge_and_branch): Do
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 10 Sep 2009 18:28:18 +0000 (18:28 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 10 Sep 2009 18:28:18 +0000 (18:28 +0000)
        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
gcc/tree-cfg.c

index edc610f..73f7c2e 100644 (file)
@@ -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.
 
index 0718cfe..5653305 100644 (file)
@@ -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);