[PATCH] ldbl-opt: Fix -mlong-double-128 configure test for Clang
Sam James
sam@gentoo.org
Sun Jul 26 14:11:52 GMT 2026
Matt Turner <mattst88@gmail.com> writes:
> The check for -mlong-double-128 support wrapped its test code in
> AC_LANG_PROGRAM, which places the body inside main(). The body defines
> a function, so it became a nested function definition -- a GCC extension
> that Clang does not implement, making the test fail (and thus the whole
> build error out) with Clang even though it supports -mlong-double-128.
Good catch!
>
> Use AC_LANG_SOURCE so the function is defined at file scope, matching the
> pattern already used by the powerpc64le compiler checks, and regenerate
> configure.
Looks like sysdeps/unix/sysv/linux/powerpc/configure.ac has the same
problem.
> ---
> sysdeps/ieee754/ldbl-opt/configure | 7 -------
> sysdeps/ieee754/ldbl-opt/configure.ac | 2 +-
> 2 files changed, 1 insertion(+), 8 deletions(-)
> mode change 100644 => 100755 sysdeps/ieee754/ldbl-opt/configure
>
> diff --git ./sysdeps/ieee754/ldbl-opt/configure ./sysdeps/ieee754/ldbl-opt/configure
> old mode 100644
> new mode 100755
> index bc6552da0b..7769cc9781
> --- ./sysdeps/ieee754/ldbl-opt/configure
> +++ ./sysdeps/ieee754/ldbl-opt/configure
> @@ -13,17 +13,10 @@ CFLAGS="$CFLAGS -mlong-double-128"
> cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> /* end confdefs.h. */
>
> -int
> -main (void)
> -{
> -
> #ifndef __LONG_DOUBLE_128__
> # error "compiler did not predefine __LONG_DOUBLE_128__ as expected"
> #endif
> long double foobar (long double x) { return x; }
> - ;
> - return 0;
> -}
> _ACEOF
> if ac_fn_c_try_compile "$LINENO"
> then :
> diff --git ./sysdeps/ieee754/ldbl-opt/configure.ac ./sysdeps/ieee754/ldbl-opt/configure.ac
> index 70e3b32dc6..1c500ad581 100644
> --- ./sysdeps/ieee754/ldbl-opt/configure.ac
> +++ ./sysdeps/ieee754/ldbl-opt/configure.ac
> @@ -6,7 +6,7 @@ AC_CACHE_CHECK(whether $CC $CFLAGS supports -mlong-double-128,
> libc_cv_mlong_double_128, [dnl
> save_CFLAGS="$CFLAGS"
> CFLAGS="$CFLAGS -mlong-double-128"
> -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
> +AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
> #ifndef __LONG_DOUBLE_128__
> # error "compiler did not predefine __LONG_DOUBLE_128__ as expected"
> #endif
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 418 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/libc-alpha/attachments/20260726/358f9d05/attachment.sig>
More information about the Libc-alpha
mailing list