diff options
-rw-r--r-- | libgfortran/ChangeLog | 8 | ||||
-rw-r--r-- | libgfortran/acinclude.m4 | 45 | ||||
-rwxr-xr-x | libgfortran/configure | 89 |
3 files changed, 108 insertions, 34 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 71a6329..18daa42 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,11 @@ +2011-02-15 Tobias Burnus <burnus@net-b.de> + + PR fortran/47716 + PR fortran/47648 + * acinclude.m4 (LIBGFOR_CHECK_FLOAT128): Use check from + libquadmath, which uses more features. + * configure: Regenerate. + 2011-02-14 Jakub Jelinek <jakub@redhat.com> PR fortran/47642 diff --git a/libgfortran/acinclude.m4 b/libgfortran/acinclude.m4 index 9873d9f..1bc1c7b 100644 --- a/libgfortran/acinclude.m4 +++ b/libgfortran/acinclude.m4 @@ -284,24 +284,33 @@ AC_DEFUN([LIBGFOR_CHECK_FLOAT128], [ AC_CACHE_CHECK([whether we have a usable __float128 type], libgfor_cv_have_float128, [ - AC_TRY_LINK([ -/* no header */ -],[ - typedef _Complex float __attribute__((mode(TC))) __complex128; - - __float128 x; - x = __builtin_huge_valq() - 2.e1000Q; - - __complex128 z1, z2; - z1 = x; - z2 = 2.Q; - - z1 /= z2; - z1 /= 7.Q; -], - libgfor_cv_have_float128=yes, - libgfor_cv_have_float128=no) - ]) + GCC_TRY_COMPILE_OR_LINK([ + typedef _Complex float __attribute__((mode(TC))) __complex128; + + __float128 foo (__float128 x) + { + + __complex128 z1, z2; + + z1 = x; + z2 = x / 7.Q; + z2 /= z1; + + return (__float128) z2; + } + + __float128 bar (__float128 x) + { + return x * __builtin_huge_valq (); + } + ],[ + foo (1.2Q); + bar (1.2Q); + ],[ + libgfor_cv_have_float128=yes + ],[ + libgfor_cv_have_float128=no +])]) if test "x$libgfor_cv_have_float128" = xyes; then AC_DEFINE(HAVE_FLOAT128, 1, [Define if have a usable __float128 type.]) diff --git a/libgfortran/configure b/libgfortran/configure index 42f72b5..9d3c891 100755 --- a/libgfortran/configure +++ b/libgfortran/configure @@ -25075,42 +25075,99 @@ if test "${libgfor_cv_have_float128+set}" = set; then : $as_echo_n "(cached) " >&6 else - if test x$gcc_no_link = xyes; then - as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 -fi -cat confdefs.h - <<_ACEOF >conftest.$ac_ext + if test x$gcc_no_link = xyes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* no header */ + typedef _Complex float __attribute__((mode(TC))) __complex128; + + __float128 foo (__float128 x) + { + + __complex128 z1, z2; + + z1 = x; + z2 = x / 7.Q; + z2 /= z1; + + return (__float128) z2; + } + + __float128 bar (__float128 x) + { + return x * __builtin_huge_valq (); + } int main () { - typedef _Complex float __attribute__((mode(TC))) __complex128; + foo (1.2Q); + bar (1.2Q); - __float128 x; - x = __builtin_huge_valq() - 2.e1000Q; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : - __complex128 z1, z2; - z1 = x; - z2 = 2.Q; + libgfor_cv_have_float128=yes - z1 /= z2; - z1 /= 7.Q; +else + + libgfor_cv_have_float128=no + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + if test x$gcc_no_link = xyes; then + as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +fi +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + typedef _Complex float __attribute__((mode(TC))) __complex128; + + __float128 foo (__float128 x) + { + + __complex128 z1, z2; + + z1 = x; + z2 = x / 7.Q; + z2 /= z1; + + return (__float128) z2; + } + + __float128 bar (__float128 x) + { + return x * __builtin_huge_valq (); + } + +int +main () +{ + + foo (1.2Q); + bar (1.2Q); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - libgfor_cv_have_float128=yes + + libgfor_cv_have_float128=yes + else - libgfor_cv_have_float128=no + + libgfor_cv_have_float128=no + fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - +fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgfor_cv_have_float128" >&5 $as_echo "$libgfor_cv_have_float128" >&6; } |