Hi! My recent gfortran + libgfortran patch apparently broke (some?) aarch64 builds. While it is desirable to use just _Float128 rather than __float128, we only want to use it (and e.g. define HAVE_FLOAT128) on targets where _Float128 is supported and long double isn't IEEE quad precision. Which is targets that support __float128 type which we have been testing for before - _Float128 is supported on those targets and on targets where long double is IEEE quad precision.
So, the following patch restores check for whether __float128 is supported into the LIBGFOR_CHECK_FLOAT128 check which determines whether HAVE_FLOAT128 is defined or whether to use libquadmath, so that e.g. on aarch64 where long double is IEEE quad we don't do that. Tested by Tamar on aarch64 and by me on x86_64-linux, ok for trunk? 2022-06-29 Jakub Jelinek <ja...@redhat.com> PR bootstrap/106137 * acinclude.m4 (LIBGFOR_CHECK_FLOAT128): Also test for __float128. * configure: Regenerated. --- libgfortran/acinclude.m4.jj 2022-06-28 13:14:45.327799267 +0200 +++ libgfortran/acinclude.m4 2022-06-29 11:45:19.286551469 +0200 @@ -276,7 +276,6 @@ AC_DEFUN([LIBGFOR_CHECK_FLOAT128], [ GCC_TRY_COMPILE_OR_LINK([ _Float128 foo (_Float128 x) { - _Complex _Float128 z1, z2; z1 = x; @@ -290,11 +289,18 @@ AC_DEFUN([LIBGFOR_CHECK_FLOAT128], [ { return x * __builtin_huge_valf128 (); } + + __float128 baz (__float128 x) + { + return x * __builtin_huge_valf128 (); + } ],[ foo (1.2F128); bar (1.2F128); + baz (1.2F128); foo (1.2Q); bar (1.2Q); + baz (1.2Q); ],[ libgfor_cv_have_float128=yes ],[ --- libgfortran/configure.jj 2022-06-28 13:14:45.331799215 +0200 +++ libgfortran/configure 2022-06-29 11:45:49.951148846 +0200 @@ -30130,7 +30130,6 @@ else _Float128 foo (_Float128 x) { - _Complex _Float128 z1, z2; z1 = x; @@ -30145,14 +30144,21 @@ else return x * __builtin_huge_valf128 (); } + __float128 baz (__float128 x) + { + return x * __builtin_huge_valf128 (); + } + int main () { foo (1.2F128); bar (1.2F128); + baz (1.2F128); foo (1.2Q); bar (1.2Q); + baz (1.2Q); ; return 0; @@ -30177,7 +30183,6 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ _Float128 foo (_Float128 x) { - _Complex _Float128 z1, z2; z1 = x; @@ -30192,14 +30197,21 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ return x * __builtin_huge_valf128 (); } + __float128 baz (__float128 x) + { + return x * __builtin_huge_valf128 (); + } + int main () { foo (1.2F128); bar (1.2F128); + baz (1.2F128); foo (1.2Q); bar (1.2Q); + baz (1.2Q); ; return 0; Jakub