real_zerop thinks -0 == 0

Mark Wielaard mark@klomp.org
Tue Apr 16 08:58:00 GMT 2002


On Tue, 2002年04月16日 at 17:05, Tom Tromey wrote:
> >>>>> "Mark" == Mark Wielaard <mark@klomp.org> writes:
>> Mark> -	if (real_zerop (exp))
> Mark> -	 OP1 (prec == 1 ? OPCODE_fconst_0 : OPCODE_dconst_0);
> Mark> -	else if (real_onep (exp))
> Mark> +	if (real_onep (exp))
>> Mark> This isn't a real solution, but I don't know how to correctly
> Mark> test for positive zero and I really must get some sleep
> Mark> now. Maybe someone more familiar with this code can suggest the
> Mark> proper solution.
>> I don't know if it is the proper solution but in gcc/real.h I see
> REAL_VALUE_MINUS_ZERO. Would it be appropriate to use this?

I am now testing this patch which seems to do exactly what is needed.
--- gcc/java/jcf-write.c	12 Mar 2002 10:33:57 -0000	1.99.2.1
+++ gcc/java/jcf-write.c	16 Apr 2002 15:53:27 -0000
@@ -25,6 +25,7 @@
 #include "system.h"
 #include "jcf.h"
 #include "tree.h"
+#include "real.h"
 #include "java-tree.h"
 #include "obstack.h"
 #undef AND
@@ -1536,7 +1537,7 @@
 {
 	int prec = TYPE_PRECISION (type) >> 5;
 	RESERVE(1);
-	if (real_zerop (exp))
+	if (real_zerop (exp) && ! REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (exp)))
 	 OP1 (prec == 1 ? OPCODE_fconst_0 : OPCODE_dconst_0);
 	else if (real_onep (exp))
 	 OP1 (prec == 1 ? OPCODE_fconst_1 : OPCODE_dconst_1);
Cheers,
Mark


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /