On Thu, Jun 10, 2021 at 9:45 PM Roger Sayle <ro...@nextmovesoftware.com> wrote:
>
>
> The patch implements a missed optimization enhancement.  Under usual
> IEEE rules, x+0.0 can't be simplified to x when x might potentially
> be an IEEE minus zero (-0.0).  The current logic in the middle-end
> checks whether the type of x should honor signed zeros, but with this
> patch we introduce tree_expr_maybe_real_minus_zero_p that allows us
> to confirm that the value can't possibly be -0.0, for example, the result
> of a conversion from an integer type, or the result of fabs (or has a
> type that doesn't honor signed zero).
>
> Whilst modifying match.pd, I also converted some additional folding
> transformations from "testing the type" to "testing the value".
>
> The following patch has been tested on x86_64-pc-linux-gnu with
> a make bootstrap and make -k check with no new failures.
>
> Ok for mainline?

OK.  Maybe we can at some point record & propagate these
FP value predicates on SSA names just similar to SSA_NAME_RANGE_INFO ...

Thanks,
Richard.

>
> 2020-06-10  Roger Sayle  <ro...@nextmovesoftware.com>
>
> gcc/ChangeLog
>         PR tree-optimization/96392
>         * fold-const.c (fold_real_zero_addition_p): Take both arguments
>         of the addition or subtraction, not just the zero.  Use this
>         other argument in tests for signaling NaNs and signed zeros.
>         (tree_expr_maybe_real_minus_zero_p): New predicate.
>         * fold-const.h (fold_real_zero_addition_p): Update prototype.
>         (tree_expr_maybe_real_minus_zero_p): New function prototype.
>         * match.pd: Update calls to fold_real_zero_addition_p.
>         Replace HONOR_NANS with tree_expr_maybe_nan_p.
>         Replace HONOR_SIGNED_ZEROS with tree_expr_maybe_real_minus_zero_p.
>         Replace HONOR_SNANS with tree_expr_maybe_signaling_nan_p.
>         * tree-ssa-reassoc.c (eliminate_using_constants): Update
>         call to fold_real_zero_addition_p.
>
> gcc/testsuite/ChangeLog
>         PR tree-optimization/96392
>         * gcc.dg/pr96392.c: New test.
>
> Roger
> --
> Roger Sayle
> NextMove Software
> Cambridge, UK
>

Reply via email to