real_zerop thinks -0 == 0
Mark Wielaard
mark@klomp.org
Mon Apr 15 18:22:00 GMT 2002
Hi,
The following seems to fix a couple of the remaining Mauve failures (the
mauve tests are first compiled to byte-code).
--- jcf-write.c 12 Mar 2002 10:33:57 -0000 1.99.2.1
+++ jcf-write.c 15 Apr 2002 23:37:46 -0000
@@ -1536,9 +1536,7 @@
{
int prec = TYPE_PRECISION (type) >> 5;
RESERVE(1);
- if (real_zerop (exp))
- OP1 (prec == 1 ? OPCODE_fconst_0 : OPCODE_dconst_0);
- else if (real_onep (exp))
+ if (real_onep (exp))
OP1 (prec == 1 ? OPCODE_fconst_1 : OPCODE_dconst_1);
/* FIXME Should also use fconst_2 for 2.0f.
Also, should use iconst_2/ldc followed by i2f/i2d
This isn't a real solution, but I don't know how to correctly test for
positive zero and I really must get some sleep now. Maybe someone more
familiar with this code can suggest the proper solution.
The example code to try is:
public class Z
{
public static void main(String[] args)
{
System.out.println(-0.0f);
}
}
Compile with gcj -C and run with gij. Output should be -0.0.
Good night,
Mark
More information about the Java
mailing list