bootcheck failed -- stage 2 & 3 differ

Fergus Henderson fjh at cs.mu.OZ.AU
Tue Mar 23 03:31:07 AEDT 1999


Hi,

The nightly tests on murlibobo failed tonight.
They last succeeded just last night, so the
problem must have been due to something checked 
in on Monday (between 12:30am Monday and 12:30am Tuesday).

The symptom is a difference between the stage 2 and stage 3
compilers:

--- stage2/compiler/bytecode_data.c	Tue Mar 23 01:28:25 1999
+++ stage3/compiler/bytecode_data.c	Tue Mar 23 01:59:15 1999
@@ -471,7 +471,7 @@
 	update_prof_current_proc(LABEL(mercury__bytecode_data__output_int_3_0));
 	if (((Integer) 64 >= (Integer) r1))
 		GOTO_LABEL(mercury__bytecode_data__output_int_3_0_i7);
-	r2 = ((Integer) MR_stackvar(1) & (Integer) -1);
+	r2 = ((Integer) MR_stackvar(1) & (Integer) 0);
 	if (((Integer) r2 == (Integer) 0))
 		GOTO_LABEL(mercury__bytecode_data__output_int_3_0_i7);
 	tag_incr_hp_msg(r2, mktag(1), (Integer) 2, mercury__bytecode_data__output_int_3_0, "origin_lost_in_value_number");

The cause of this is Simon's changes to << and >>.
The line which is being compiled differently is this one,

	(IntVal /\ (\0 << Bits)) \= 0

from line 144 of bytecode.m, where the compiler has
(though inlining) been able to figure out that Bits
has the value 64.  And \0 is of course just -1.
So the value which is being compiled to either -1 or 0
is `-1 << 64'.  This ought to evaluate to 0, not -1,
so the stage 3 compiler is in fact correct, and it is
the stage 2 compiler which is wrong.

So, I think the solution to this is to ignore the error, install the
compiler anyway, and the problem should go away.  I will make a
temporary modification to the copy of the test_mercury script in
/home/mercury/public/test_mercury/scripts to ensure that this happens.

-- 
Fergus Henderson <fjh at cs.mu.oz.au>  |  "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh>  |  of excellence is a lethal habit"
PGP: finger fjh at 128.250.37.3        |     -- the last words of T. S. Garp.



More information about the developers mailing list