From 03ea48ff27fd40b04b148f7006a02513a887ad0d Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 21 Dec 2020 16:17:23 -0800 Subject: [PATCH] Go frontend: ensure mpfr exponent range is large enough for Go PR go/98402 * go-lang.c (go_langhook_init): Force MPFR exponent range to be large enough to support Go constants. --- gcc/go/go-lang.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gcc/go/go-lang.c b/gcc/go/go-lang.c index 08c1f38a2c1..9c0e7af7b84 100644 --- a/gcc/go/go-lang.c +++ b/gcc/go/go-lang.c @@ -131,6 +131,16 @@ go_langhook_init (void) eventually be controllable by a command line option. */ mpfr_set_default_prec (256); + /* If necessary, override GCC's choice of minimum and maximum + exponents. This should only affect GCC middle-end + compilation-time, not correctness. */ + mpfr_exp_t exp = mpfr_get_emax (); + if (exp < (1 << 16) - 1) + mpfr_set_emax ((1 << 16) - 1); + exp = mpfr_get_emin (); + if (exp > - ((1 << 16) - 1)) + mpfr_set_emin (- ((1 << 16) - 1)); + /* Go uses exceptions. */ using_eh_for_cleanups (); -- 2.30.2