cfgrtl.c (purge_dead_edges): Don't remove fake edges.
authorDaniel Berlin <dberlin@dberlin.org>
Wed, 18 May 2005 13:29:38 +0000 (13:29 +0000)
committerDaniel Berlin <dberlin@gcc.gnu.org>
Wed, 18 May 2005 13:29:38 +0000 (13:29 +0000)
2005-05-18  Daniel Berlin  <dberlin@dberlin.org>

* cfgrtl.c (purge_dead_edges): Don't remove fake edges.

From-SVN: r99897

gcc/ChangeLog
gcc/cfgrtl.c

index 11b9bc3ec4b46ff2b05fdb5bbe49394436937021..26c1162dc70a3bcb0ea8b74656a348f6c7b1e930 100644 (file)
@@ -1,3 +1,7 @@
+2005-05-18  Daniel Berlin  <dberlin@dberlin.org>
+
+       * cfgrtl.c (purge_dead_edges): Don't remove fake edges.
+
 2005-05-18  Daniel Berlin  <dberlin@dberlin.org>
        
        Fix PR tree-optimization/21407
index 3ceca75f7e382e27449be01932d0a695fd62cc73..42761cad745d02bb90a07393f40df94064942556 100644 (file)
@@ -2428,9 +2428,12 @@ purge_dead_edges (basic_block bb)
   if (!found)
     return purged;
 
+  /* Remove all but the fake and fallthru edges.  The fake edge may be
+     the only successor for this block in the case of noreturn
+     calls.  */
   for (ei = ei_start (bb->succs); (e = ei_safe_edge (ei)); )
     {
-      if (!(e->flags & EDGE_FALLTHRU))
+      if (!(e->flags & (EDGE_FALLTHRU | EDGE_FAKE)))
        {
          bb->flags |= BB_DIRTY;
          remove_edge (e);