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