Patch to rework IEEE floating point checks

Richard Henderson rth@redhat.com
Thu Feb 28 12:34:00 GMT 2002


On Thu, Feb 28, 2002 at 05:49:42PM +0000, Richard Sandiford wrote:
> 	* defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES): New.
> 	(MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): New.
> 	* flags.h (HONOR_NANS, HONOR_INFINITIES, HONOR_SIGNED_ZEROS): New.
> 	(HONOR_SIGN_DEPENDENT_ROUNDING): New.
> 	* builtins.c (expand_builtin_mathfn): Use HONOR_NANS.
> 	* c-common.c (truthvalue_conversion): Reduce x - y != 0 to x != y
> 	unless x and y could be infinite.
> 	(expand_unordered_cmp): New, mostly split from expand_tree_builtin.
> 	Check that the common type of both arguments is a real, even for
> 	targets without unordered comparisons.  Allow an integer argument
> 	to be compared against a real.
> 	(expand_tree_builtin): Use expand_unordered_cmp.
> 	* combine.c (combine_simplify_rtx): Use the new HONOR_... macros.
> 	* cse.c (fold_rtx): Likewise.  Fix indentation.
> 	* fold-const.c (fold): Use the new HONOR_... macros.
> 	* ifcvt.c (noce_try_minmax): And here.
> 	* jump.c (reversed_comparison_code_parts): After searching for
> 	the true comparison mode, use HONOR_NANS to decide whether it
> 	can be safely reversed.
> 	(reverse_condition_maybe_unordered): Remove IEEE check.
> 	* simplify-rtx.c (simplify_binary_operation): Use the new macros
> 	to decide which simplifications are valid.  Allow the following
> 	simplifications for IEEE: (-a + b) to (b - a), (a + -b) to (a - b),
> 	and (a - -b) to (a + b).
> 	(simplify_relational_operation): Use HONOR_NANS.
> 	* doc/tm.texi: Document the MODE_HAS_... macros.
> 
> 	* gcc.dg/unordered-1.c: New test.

Excellent.

One change request: s/-ve infinity/-Inf/ as the former looks like a typo.

With that, ok for mainline.


r~



More information about the Gcc-patches mailing list