https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119408

--- Comment #25 from chenglulu <chenglulu at loongson dot cn> ---
(In reply to Xi Ruoyao from comment #23)
> (In reply to Jakub Jelinek from comment #22)
> > I think for libgfortran the cleanest would be in the configure check whether
> > long double is IEEE quad and if so, have libgfor_cv_have_float128 no.
> > That can be e.g.
> > #if __LDBL_MANT_DIG__ == __FLT128_MANT_DIG__ && __LDBL_MIN_EXP__ ==
> > __FLT128_MIN_EXP__
> > #error long double is IEEE quad, no need for _Float128/__float128
> > #endif
> 
> Something like
> 
> diff --git a/libgfortran/acinclude.m4 b/libgfortran/acinclude.m4
> index a73207e5465..bf42d4df012 100644
> --- a/libgfortran/acinclude.m4
> +++ b/libgfortran/acinclude.m4
> @@ -274,6 +274,10 @@ AC_DEFUN([LIBGFOR_CHECK_FLOAT128], [
>    AC_CACHE_CHECK([whether we have a usable _Float128 type],
>                   libgfor_cv_have_float128, [
>     GCC_TRY_COMPILE_OR_LINK([
> +    #if __LDBL_MANT_DIG__ == __FLT128_MANT_DIG__ && __LDBL_MIN_EXP__ ==
> __FLT128_MIN_EXP__
> +    #error long double is IEEE quad, no need for _Float128/__float128
> +    #endif
> +
>      _Float128 foo (_Float128 x)
>      {
>       _Complex _Float128 z1, z2;
> diff --git a/libquadmath/configure.ac b/libquadmath/configure.ac
> index 349be2607c6..585bf2c71b5 100644
> --- a/libquadmath/configure.ac
> +++ b/libquadmath/configure.ac
> @@ -233,6 +233,10 @@ AM_CONDITIONAL(LIBQUAD_USE_SYMVER_SUN, [test
> "x$quadmath_use_symver" = xsun])
>  
>  AC_CACHE_CHECK([whether __float128 is supported],
> [libquad_cv_have_float128],
>    [GCC_TRY_COMPILE_OR_LINK([
> +    #if __LDBL_MANT_DIG__ == __FLT128_MANT_DIG__ && __LDBL_MIN_EXP__ ==
> __FLT128_MIN_EXP__
> +    #error long double is IEEE quad, no need for _Float128/__float128
> +    #endif
> +
>      #if (!defined(_ARCH_PPC)) || defined(__LONG_DOUBLE_IEEE128__)
>      typedef _Complex float __attribute__((mode(TC))) __complex128;
>      #else
> 
> ?
This modification can solve my problem.

Reply via email to