We have a mechanism to prevent the scheduler from touching certain
blocks; this is used by modulo scheduling. sched-ebb does not honor this
flag currently; this patch fixes it. Bootstrapped and tested on
i686-linux (pointlessly... but it's also used in our local tree for a
new target, TI C6X).


Bernd
        * sched-ebb.c (schedule_ebbs): Honor the BB_DISABLE_SCHEDULE_FLAG.

Index: gcc/sched-ebb.c
===================================================================
--- gcc/sched-ebb.c.orig
+++ gcc/sched-ebb.c
@@ -585,6 +585,9 @@ schedule_ebbs (void)
     {
       rtx head = BB_HEAD (bb);
 
+      if (bb->flags & BB_DISABLE_SCHEDULE)
+       continue;
+
       for (;;)
        {
          edge e;
@@ -597,6 +600,8 @@ schedule_ebbs (void)
            break;
          if (e->probability <= probability_cutoff)
            break;
+         if (e->dest->flags & BB_DISABLE_SCHEDULE)
+           break;
          bb = bb->next_bb;
        }
 

Reply via email to