From: Eric Botcazou Date: Wed, 10 Mar 2021 11:05:53 +0000 (+0100) Subject: Do not assume that __float128 exists X-Git-Tag: upstream/12.2.0~9359 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=47403a0eefac52636db768dc46c3c88a2cd4b28e;p=platform%2Fupstream%2Fgcc.git Do not assume that __float128 exists The code in build_round_expr implicitly assumes that __float128 exists, which is *not* the common case among 64-bit architectures since the "long double" type is generally already 128-bit for them. gcc/fortran/ PR fortran/96983 * trans-intrinsic.c (build_round_expr): Do not implicitly assume that __float128 is the 128-bit floating-point type. --- diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index 5c9258c..9cf3642 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -407,7 +407,7 @@ build_round_expr (tree arg, tree restype) if (kind < 0) gfc_internal_error ("Could not find real kind with at least %d bits", resprec); - arg = fold_convert (gfc_float128_type_node, arg); + arg = fold_convert (gfc_get_real_type (kind), arg); fn = gfc_builtin_decl_for_float_kind (BUILT_IN_ROUND, kind); } else