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;
}