aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libgfortran/ChangeLog8
-rw-r--r--libgfortran/acinclude.m445
-rwxr-xr-xlibgfortran/configure89
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; }