[PATCH] ldbl-opt: Fix -mlong-double-128 configure test for Clang
Matt Turner <[email protected]> Sun, 26 Jul 2026 00:27:37 -0400
| Newsgroups | gmane.comp.lib.glibc.alpha |
|---|---|
| Message-ID | <[email protected]> |
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.
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.
---
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
--
2.54.0