Fix solaris2 loop-2d.c failure reported by Manfred Hollstein.
authorJim Wilson <wilson@cygnus.com>
Mon, 6 Apr 1998 17:50:13 +0000 (17:50 +0000)
committerJim Wilson <wilson@gcc.gnu.org>
Mon, 6 Apr 1998 17:50:13 +0000 (10:50 -0700)
* haifa-sched.c (build_control_flow): Set unreachable for block whose
only predecessor is itself.

From-SVN: r19021

gcc/ChangeLog
gcc/haifa-sched.c

index d35f141f7e07b7091fbf5caf9f45014bfc908dca..00272783344b48f09144cd4380aedeb0274353be 100644 (file)
@@ -1,3 +1,8 @@
+Mon Apr  6 17:23:41 1998  Jim Wilson  <wilson@cygnus.com>
+
+       * haifa-sched.c (build_control_flow): Set unreachable for block whose
+       only predecessor is itself.
+
 Mon Apr  6 16:08:04 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
         * c-parse.in: Include system.h, and remove stuff now made redundant.
index 43e5264d0848bff2d6d11c8790a573aebd08af5e..9b7c0d4744d012726093bf001f204b55e55be7b0 100644 (file)
@@ -1220,7 +1220,10 @@ build_control_flow ()
   for (i = 0; i < n_basic_blocks; i++)
     {
       nr_edges += num_succs[i];
-      if (num_preds[i] == 0)
+      /* ??? We must also detect unreachable loops here.  We only handle the
+        trivial case of a loop with one basic block for now.  */
+      if (num_preds[i] == 0
+         || (num_preds[i] == 1 && INT_LIST_VAL (s_preds[i]) == i))
        unreachable = 1;
     }