Index: arith.c =================================================================== --- arith.c (revision 142183) +++ arith.c (working copy) @@ -379,6 +379,7 @@ gfc_check_real_range (mpfr_t p, int kind en = gfc_real_kinds[i].min_exponent - gfc_real_kinds[i].digits + 1; mpfr_set_emin ((mp_exp_t) en); mpfr_set_emax ((mp_exp_t) gfc_real_kinds[i].max_exponent); + mpfr_check_range (q, 0, GFC_RND_MODE); mpfr_subnormalize (q, 0, GFC_RND_MODE); /* Reset emin and emax. */ Index: simplify.c =================================================================== --- simplify.c (revision 142183) +++ simplify.c (working copy) @@ -2993,6 +2993,7 @@ gfc_simplify_nearest (gfc_expr *x, gfc_e mpfr_set_emin ((mp_exp_t) gfc_real_kinds[kind].min_exponent - mpfr_get_prec(result->value.real) + 1); mpfr_set_emax ((mp_exp_t) gfc_real_kinds[kind].max_exponent - 1); + mpfr_check_range (result->value.real, 0, GMP_RNDU); if (mpfr_sgn (s->value.real) > 0) {