2005-05-18 Daniel Berlin <dberlin@dberlin.org>
authordberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 18 May 2005 13:29:38 +0000 (13:29 +0000)
committerdberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 18 May 2005 13:29:38 +0000 (13:29 +0000)
* cfgrtl.c (purge_dead_edges): Don't remove fake edges.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@99897 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/cfgrtl.c

index 11b9bc3..26c1162 100644 (file)
@@ -1,4 +1,8 @@
 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 3ceca75..42761ca 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);