This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Phase Ordering of Scheduling and Allocation in GCC

Ghassan Shobaki wrote:


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 message:

bits.c:113: internal compiler error: basic blocks not laid down consecutively
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 that?

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.

If that's possible, any idea what changes I need to make besides simply switching the order in which the two phases are invoked?
The above error message may give you a good idea about the problem.

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.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]