This is the mail archive of the gcc@gcc.gnu.org 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]

Re: A few SPEC95 results for the new register allocator


Daniel Berlin wrote:

> Diego Novillo <dnovillo@redhat.com> writes:

> > Today, the new register allocator branch successfully passed a
> > few SPEC95 tests for the first time. The new allocator produces
> > slightly worse SPEC marks except for perl (+4% speedup).
>
> This is actually very good, considering we

[ ... SNIP ... ]

> I'd guess we'd be doing at least as well as the old allocator already on RISC
> processors, however.

Unfortunately, not on Alpha's.

This is basically because ra.c won't compile:

../../gcc/gcc/ra.c: In function `colorize_one_web':
../../gcc/gcc/ra.c:2342: subscripted value is neither array nor pointer

The reason seems to be that

	HARD_REG_SET colors

doesn't imply that colors is an array, like it is assumed in line 2342:

                   "[free = %x, mode = %s]\n", web->id, colors[0],

because (see hard-reg-set.h):

<QUOTE>
typedef unsigned HOST_WIDE_INT HARD_REG_ELT_TYPE;

#if FIRST_PSEUDO_REGISTER <= HOST_BITS_PER_WIDE_INT

#define HARD_REG_SET HARD_REG_ELT_TYPE

#else

#define HARD_REG_SET_LONGS \
 ((FIRST_PSEUDO_REGISTER + HOST_BITS_PER_WIDE_INT - 1)  \
  / HOST_BITS_PER_WIDE_INT)
typedef HARD_REG_ELT_TYPE HARD_REG_SET[HARD_REG_SET_LONGS];

#endif
</QUOTE>

i.e. if the number of hard registers is smaller than the number of
HOST_BITS_PER_WIDE_INT, colors is not an array.

Hope this clarifies,

-- 
Toon Moene - mailto:toon@moene.indiv.nluug.nl - phoneto: +31 346 214290
Saturnushof 14, 3738 XG  Maartensdijk, The Netherlands
Maintainer, GNU Fortran 77: http://gcc.gnu.org/onlinedocs/g77_news.html
Join GNU Fortran 95: http://g95.sourceforge.net/ (under construction)


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