[PATCH 2/2] PR 92463 MPFR modernization: Revert r269139
Tobias Burnus
tobias@codesourcery.com
Wed Nov 20 16:03:00 GMT 2019
LGTM.
Thanks,
Tobias
PS: For reference, mpfr_regular_p was added in MPFR 3.0.0 (as stated);
acting as follows:
mpfr_number_p = returns nonzero if ordinary number (i.e., neither NaN
nor an infinity),
mpfr_regular_p = returns nonzero if regular number (i.e., neither NaN,
nor an infinity nor zero)
On 11/18/19 9:34 PM, Janne Blomqvist wrote:
> Commit r269139 fixed an accidental dependency on MPFR 3.0. As we now
> require at least MPFR 3.1.0+ we can revert it and instead use the
> simpler MPFR 3.0+ code.
>
> ChangeLog entry of the original commit was:
>
> 2019-02-23 David Malcolm <dmalcolm@redhat.com>
> Jakub Jelinek <jakub@redhat.com>
>
> PR middle-end/88074
> * simplify.c (norm2_do_sqrt, gfc_simplify_norm2): Use
> mpfr_number_p && !mpfr_zero_p instead of mpfr_regular_p.
> (norm2_add_squared): Likewise. Use mp_exp_t rather than mpfr_exp_t.
> ---
> gcc/fortran/simplify.c | 14 +++++---------
> 1 file changed, 5 insertions(+), 9 deletions(-)
>
> diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
> index a5c940ca2d5..b48bf014121 100644
> --- a/gcc/fortran/simplify.c
> +++ b/gcc/fortran/simplify.c
> @@ -6023,8 +6023,8 @@ norm2_add_squared (gfc_expr *result, gfc_expr *e)
>
> gfc_set_model_kind (result->ts.kind);
> int index = gfc_validate_kind (BT_REAL, result->ts.kind, false);
> - mp_exp_t exp;
> - if (mpfr_number_p (result->value.real) && !mpfr_zero_p (result->value.real))
> + mpfr_exp_t exp;
> + if (mpfr_regular_p (result->value.real))
> {
> exp = mpfr_get_exp (result->value.real);
> /* If result is getting close to overflowing, scale down. */
> @@ -6038,7 +6038,7 @@ norm2_add_squared (gfc_expr *result, gfc_expr *e)
> }
>
> mpfr_init (tmp);
> - if (mpfr_number_p (e->value.real) && !mpfr_zero_p (e->value.real))
> + if (mpfr_regular_p (e->value.real))
> {
> exp = mpfr_get_exp (e->value.real);
> /* If e**2 would overflow or close to overflowing, scale down. */
> @@ -6079,9 +6079,7 @@ norm2_do_sqrt (gfc_expr *result, gfc_expr *e)
> if (result != e)
> mpfr_set (result->value.real, e->value.real, GFC_RND_MODE);
> mpfr_sqrt (result->value.real, result->value.real, GFC_RND_MODE);
> - if (norm2_scale
> - && mpfr_number_p (result->value.real)
> - && !mpfr_zero_p (result->value.real))
> + if (norm2_scale && mpfr_regular_p (result->value.real))
> {
> mpfr_t tmp;
> mpfr_init (tmp);
> @@ -6120,9 +6118,7 @@ gfc_simplify_norm2 (gfc_expr *e, gfc_expr *dim)
> result = simplify_transformation_to_scalar (result, e, NULL,
> norm2_add_squared);
> mpfr_sqrt (result->value.real, result->value.real, GFC_RND_MODE);
> - if (norm2_scale
> - && mpfr_number_p (result->value.real)
> - && !mpfr_zero_p (result->value.real))
> + if (norm2_scale && mpfr_regular_p (result->value.real))
> {
> mpfr_t tmp;
> mpfr_init (tmp);
More information about the Gcc-patches
mailing list