This is the mail archive of the
mailing list for the GCC project.
Re: Phase Ordering of Scheduling and Allocation in GCC
- From: "Vladimir N. Makarov" <vmakarov at redhat dot com>
- To: Ghassan Shobaki <gshobaki at ece dot ucdavis dot edu>
- Cc: gcc-help at gcc dot gnu dot org, Jan Hubicka <hubicka at ucw dot cz>
- Date: Fri, 24 Nov 2006 14:31:05 -0500
- Subject: Re: Phase Ordering of Scheduling and Allocation in GCC
- References: <20031204000558.GD23084@atrey.karlin.mff.cuni.cz> <Pine.GHP.firstname.lastname@example.org> <20040128122317.GI8094@kam.mff.cuni.cz> <Pine.GHP.email@example.com> <20040129101203.GB30883@atrey.karlin.mff.cuni.cz> <Pine.GHP.firstname.lastname@example.org> <20040201215520.GI30324@kam.mff.cuni.cz> <Pine.LNX.email@example.com> <40293A4D.firstname.lastname@example.org> <40293C78.email@example.com> <20040210202725.GJ1382@atrey.karlin.mff.cuni.cz> <Pine.LNX.firstname.lastname@example.org> <Pine.LNX.email@example.com> <4210D6C0.firstname.lastname@example.org> <4210E03A.email@example.com> <Pine.LNX.firstname.lastname@example.org>
Ghassan Shobaki wrote:
Hi,I don't know such reason but ebb scheduling was written for Itanium to
work as practically the very last pass. It was not supposed to work
before the register allocator.
I am currently experimenting with superblock and trace scheduling in GCC
(using the -fsched2-use-superblocks option). In an attempt to get traces
with more parallelism, I tried to change the phase ordering so that
superblcok scheduling is done before register allocation. However, when I
switched the order and ran the compiler I got the following error
bits.c:113: internal compiler error: basic blocks not laid down
Please submit a full bug report,
So, the question is: will it be possible to do superblock scheduling
before regsiter allocation or there is a fundamental reason that prohibits
If that's possible, any idea what changes I need to make besides
simply switching the order in which the two phases are invoked?It is hard to say but I think that ebb scheduler is not accurate with
maintaining CFG in a right shape therefore verifying CFG information
failed after the ebb. So you have to find what is wrong and fix it.
Sorry there is no easier way to make it work before the register allocator.
The above error message may give you a good idea about the problem.