+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
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. */
}
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. */
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);
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);