flow.c (flow_loop_pre_header_scan): Punt if loop enters from entry block.
authorMichael Hayes <mhayes@cygnus.com>
Tue, 26 Sep 2000 10:03:47 +0000 (10:03 +0000)
committerMichael Hayes <m.hayes@gcc.gnu.org>
Tue, 26 Sep 2000 10:03:47 +0000 (10:03 +0000)
* flow.c (flow_loop_pre_header_scan): Punt if loop enters
from entry block.

From-SVN: r36644

gcc/ChangeLog
gcc/flow.c

index aeba67f9301d6d96918bdf7e28c4abc4b15eb368..8c8b234a145ceee15c6de388857ff7e51eeb5383 100644 (file)
@@ -1,3 +1,8 @@
+2000-09-26  Michael Hayes  <mhayes@cygnus.com>
+
+       * flow.c (flow_loop_pre_header_scan): Punt if loop enters
+       from entry block.
+
 2000-09-25  Jim Wilson  <wilson@cygnus.com>
 
        * config/ia64/ia64.h (INDEX_REG_CLASS): Define to GENERAL_REGS.
index 9eef2442d8096ab5fe7b5ff3b7f98e17fda28e0d..b913c6ea8c7de449f9b57f7395b53e6d0ec9860a 100644 (file)
@@ -7869,12 +7869,16 @@ flow_loop_pre_header_scan (loop)
   sbitmap_zero (loop->pre_header_trace);
   
   ebb = loop->entry_edges[0]->src;
-  SET_BIT (loop->pre_header_trace, ebb->index);
-  while (ebb->pred->src != ENTRY_BLOCK_PTR
-        && ! ebb->pred->pred_next)
+
+  if (ebb != ENTRY_BLOCK_PTR)
     {
-      ebb = ebb->pred->src;
       SET_BIT (loop->pre_header_trace, ebb->index);
+      while (ebb->pred->src != ENTRY_BLOCK_PTR
+            && ! ebb->pred->pred_next)
+       {
+         ebb = ebb->pred->src;
+         SET_BIT (loop->pre_header_trace, ebb->index);
+       }
     }
   
   loop->pre_header_root = ebb;