summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJanne Blomqvist <jb@gcc.gnu.org>2019-11-20 22:08:29 +0200
committerJanne Blomqvist <jb@gcc.gnu.org>2019-11-20 22:08:29 +0200
commitacb156cc3170a848e1235d1f3402d42018219766 (patch)
tree03981e07a9585a8e925cc4df8f22c537538035f3
parentc9d4cc5df27acfcea40e18cdcd6933b3b1349b9a (diff)
PR 92463 MPFR modernization: Revert r269139
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. ChangeLog for this commit: 2019-11-20 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/92463 Revert r269139 * simplify.c (norm2_do_sqrt, gfc_simplify_norm2): Use mpfr_regular_p instead of mpfr_number_p && !mpfr_zero_p. (norm2_add_squared): Likewise. Use mpfr_exp_t rather than mp_exp_t. From-SVN: r278525
-rw-r--r--gcc/fortran/ChangeLog9
-rw-r--r--gcc/fortran/simplify.c14
2 files changed, 14 insertions, 9 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 62c7c921d27..56077245a45 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,6 +1,15 @@
2019-11-20 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/92463
+ Revert r269139
+ * simplify.c (norm2_do_sqrt, gfc_simplify_norm2): Use
+ mpfr_regular_p instead of mpfr_number_p && !mpfr_zero_p.
+ (norm2_add_squared): Likewise. Use mpfr_exp_t rather than
+ mp_exp_t.
+
+2019-11-20 Janne Blomqvist <jb@gcc.gnu.org>
+
+ PR fortran/92463
* arith.c (gfc_mpfr_to_mpz): Change mp_exp_t to mpfr_exp_t.
(gfc_check_real_range): Likewise.
* gfortran.h (GFC_RND_MODE): Change GMP_RNDN to MPFR_RNDN.
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);