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]

V3: SPARC bug and tree freeze


I returned to find the SPARC bootstrap stuck while building V3.  This
must be a recently introduced bug, since it worked a day or two back.

The code that cause the problem can be boiled down to:

  int main ()
    long long i = 1;
    long long j = 0;

    while (i > j) {
      j = i;
      i = i * 2 + 1;

This code, when compiled with the newly build C compiler, will not
terminate.  Here is the body of the loop:

	ldd	[%fp-24], %i0
	std	%i0, [%fp-32]
	ldd	[%fp-24], %i2
	srl	%i3, 31, %i5
	sll	%i2, 1, %i4
	addcc	%i1, 1, %i1
	addx	%i0, 0, %i0
	std	%i0, [%fp-24]
	b	.LL3

The first two instructions assign i to j.

Then, we try to do the multiply and add.  The computation places
values into %i5 and %i4, but those values are then ignored.

I am going to try to track this down, but I would appreciate help from
anyone who might recognize the cause of this.

I don't want to switch to V3 until we can verify Solaris, but I also
don't want to risk instability that makes it harder to switch.  We
need to make the switch -- it's a very important milestone.

Therefore, until this bug is fixed, please consider the tree
completely frozen, except for changes to the Java, Objective-C, and
Fortran front-ends, and back-ends other than SPARC, MIPS, and x86.  In
other words, let's have no changes to code that could affect the MIPS
IRIX, SPARC Solaris, or x86 GNU/Linux C or C++ front-ends, or
associated libraries.

I expect this to be a very brief freeze, as I think we can track this
bug down quickly.

Thank you for your patience,

Mark Mitchell         
CodeSourcery, LLC     

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