David Edelsohn wrote:
Maxim Kuvyrkov writes:
Maxim> Anyway, this work is for stage 1 or 2 and for now I propose following
Maxim> fix: implement targetm.sched.reorder hook so that it will ensure that if
Maxim> there is an insn from the current block in the ready list, then insn
Maxim> from the other block won't stand first in the line (and, therefore,
Maxim> won't be chosen for schedule). I feel that this will be what you are
Maxim> calling 'filling holes'. Please find an example patch attached (arm.patch).
What about all of the other GCC targets?
If your patch changed the default behavior of the scheduler
assumed by all other ports, you should fix the scheduler and modify the
IA-64 port to get the behavior desired.
Exactly.
I think this is a serious regression, and I would like to consider our
options. Daniel has suggested changing the default value of the
max-sched-extend-regions-iters param to 1. However, I think we should
conservatively change it to zero, for now, and then use a target macro
to allow IA64 to set it to two, and other ports to gradually turn this
on if useful.