This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: IRA for GCC 4.4
- From: "J.C. Pizarro" <jcpiza at gmail dot com>
- To: "Peter Bergner" <bergner at vnet dot ibm dot com>, "Vladimir Makarov" <vmakarov at redhat dot com>, "Paolo Bonzini" <bonzini at gnu dot org>, FX <fxcoudert at gmail dot com>, "GCC Development" <gcc at gcc dot gnu dot org>, "Steven Bosscher" <stevenb dot gcc at gmail dot com>, "Kenneth Zadeck" <zadeck at naturalbridge dot com>
- Date: Mon, 28 Apr 2008 17:18:53 +0200
- Subject: Re: IRA for GCC 4.4
- References: <998d0e4a0804271245u65d2e4a0p5be45df2ff17a752@mail.gmail.com>
On 2008/4/27 J.C. Pizarro <jcpiza@gmail.com> wrote:
> On Fri 25 Apr 2008 22:22:55 -0500, Peter Bergner <bergner@vnet.ibm.com> wrote:
> > The difference between a compressed upper triangular bit matrix from a standard
> > upper triangular bit matrix like the one above, is we eliminate space from the
> > bit matrix for conflicts we _know_ can never exist. The easiest case to catch,
> > and the only one we catch at the moment, is that allocnos that are "local" to a
> > basic block B1 cannot conflict with allocnos that are local to basic block B2,
> > where B1 != B2. To take advantage of this fact, I updated the code in global.c
> > to sort the allocnos such that all "global" allocnos (allocnos that are live in
> > more than one basic block) are given smaller allocno numbers than the "local"
> > allocnos, and all allocnos for a given basic block are grouped together in a
> > contiguous range to allocno numbers. The sorting is accomplished by:
> >
> > /* ...so we can sort them in the order we want them to receive
> > their allocnos. */
> > qsort (reg_allocno, max_allocno, sizeof (int), regno_compare);
> >
>
> ...
> It's useful when there are increases or decreases in the number of BBs.
Topicing off about the recent stupidity's discussion, the chained
upper triangulars
and rectangulars are more flexible than a bigger compressed upper triangular
because
how expensive is modifying the compressed upper triangular when
1) add o remove basic blocks?
2) add o remove allocnos?
In the chained case, you can call to subroutine to make it consistent after of
adding or removing basic blocks or allocnos, it's traversing the chains and
remallocing the many local memoryspaces of BBs.
In the compressed case, you have to realize complex and expensive routines
for remallocing the big compressed upper triangular.
J.C.Pizarro