C++: __java_double expressions promote to float
Andrew Haley
aph@cambridge.redhat.com
Wed Apr 10 09:45:00 GMT 2002
Jason Merrill writes:
> I told you in person this was OK, but reading over the function again, I
> see that we don't need to add explicit __java_double support, we just need
> to stop assuming that any REAL_TYPE not long double or double must be
> float. The 'else' should be an 'if' like the others, as specified in the
> standard. The default should be to arbitrarily choose one of the two
> types. Or perhaps use type_for_mode.
2002年04月10日 Andrew Haley <aph@cambridge.redhat.com>
* typeck.c (type_after_usual_arithmetic_conversions):
When two floating-point operands have the same precision:
convert to float if one of the operands is float;
if neither operand is one of the standard types, return the type
of the first operand.
Index: typeck.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cp/typeck.c,v
retrieving revision 1.393
diff -c -2 -p -r1.393 typeck.c
*** typeck.c 22 Mar 2002 22:03:04 -0000 1.393
--- typeck.c 10 Apr 2002 14:15:52 -0000
*************** type_after_usual_arithmetic_conversions
*** 443,449 ****
return build_type_attribute_variant (double_type_node,
attributes);
! else
return build_type_attribute_variant (float_type_node,
attributes);
}
}
--- 443,457 ----
return build_type_attribute_variant (double_type_node,
attributes);
! if (same_type_p (TYPE_MAIN_VARIANT (t1), float_type_node)
! || same_type_p (TYPE_MAIN_VARIANT (t2), float_type_node))
return build_type_attribute_variant (float_type_node,
attributes);
+
+ /* Two floating-point types whose TYPE_MAIN_VARIANTs are none of
+ the standard C++ floating-point types. Logic earlier in this
+ function has already eliminated the possibility that
+ TYPE_PRECISION (t2) != TYPE_PRECISION (t1), so there's no
+ compelling reason to choose one or the other. */
+ return build_type_attribute_variant (t1, attributes);
}
}
> Also, the function should check for the types actually being the same up
> where it tests for different precisions; no need to get fancy in that case.
Pardon?
Andrew.
More information about the Java
mailing list