tree-cfg.c (gimple_redirect_edge_and_branch): Do gimple_try_redirect_by_replacing_jum...
authorRichard Henderson <rth@redhat.com>
Thu, 10 Sep 2009 18:28:18 +0000 (11:28 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 10 Sep 2009 18:28:18 +0000 (11:28 -0700)
* 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

gcc/ChangeLog
gcc/tree-cfg.c

index edc610f927611edd5fdf2f8271d217b12de08cef..73f7c2e1e9588d583c19a45de16c3f4f6a5cdb6f 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 0718cfed783df885dd06ad7ba2db9c2aee70f8b8..565330591a4a1d85555d4e7eeeda00e6ff5a00ca 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);