2003-01-16 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
authorrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 16 Jan 2003 15:49:20 +0000 (15:49 +0000)
committerrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 16 Jan 2003 15:49:20 +0000 (15:49 +0000)
* cfgloop.c (flow_loops_find): Fix handling of abnormal edges.

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

gcc/ChangeLog
gcc/cfgloop.c

index 8dedbee..fa92014 100644 (file)
@@ -1,3 +1,7 @@
+2003-01-16  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
+
+       * cfgloop.c (flow_loops_find): Fix handling of abnormal edges.
+
 2003-01-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * dbxout.c (lastfile, cwd): Fix `unused' warning.
index da958c2..b93302e 100644 (file)
@@ -804,19 +804,20 @@ flow_loops_find (loops, flags)
      
       header->loop_depth = 0;
 
+      /* If we have an abnormal predecessor, do not consider the
+        loop (not worth the problems).  */
+      for (e = header->pred; e; e = e->pred_next)
+       if (e->flags & EDGE_ABNORMAL)
+         break;
+      if (e)
+       continue;
+
       for (e = header->pred; e; e = e->pred_next)
        {
          basic_block latch = e->src;
 
          if (e->flags & EDGE_ABNORMAL)
-           {
-             if (more_latches)
-               {
-                 RESET_BIT (headers, header->index);
-                 num_loops--;
-               }
-             break;
-           }
+           abort ();
 
          /* Look for back edges where a predecessor is dominated
             by this block.  A natural loop has a single entry