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]
Other format: [Raw text]

Re: ICE on IA-64 when compiling SPEC 2000 176.gcc at -O1


Richard Henderson wrote:

> On Wed, Dec 05, 2001 at 05:07:50PM -0800, Reva Cuthbertson wrote:
> > ... and it happens because the born_index > death_index test fails so
> > we call abort().
>
> This is normally due to register life info being incorrect.
>
> That is, on input to local_alloc some register was reported
> to be set once and never die (certainly possible), yet the
> register does in fact die.
>
> Can't debug this further without a test case.
>
> r~

Richard,

     The problem can be seen when compiling the function
output_signed_leb128() in dwarfout.c in the gcc sources.
The function itself has been commented out on the main
branch so the problem does not happen if you compile
dwarfout.c with -O1.  However, the function output_signed_leb128()
is part of 176.gcc in SPEC 2000.  For convenience, I cut down
output_signed_leb128() into the following test case.  Compile
this with -O1 using gcc 3.1 for IA-64 and the internal compiler
error should occur.

static void
output_signed_leb128 (value)
     long value;
{
  int more;

  do
    {
      unsigned byte = (value & 0x7f);

      value >>= 7;
      if (((value == 0) && ((byte & 0x40) == 0))
          || ((value == -1) && ((byte & 0x40) == 1)))
        more = 0;
    }
  while (more);
}


Thanks!

Reva



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