powerpc: Fix -mlong-double-128 IBM format configure test for Clang

Message ID 20260726184311.2796871-1-mattst88@gmail.com (mailing list archive)
State Committed
Commit 559d0f77f3ee1000cf8a2d0baba7a59a1ec45f50
Headers
Series powerpc: Fix -mlong-double-128 IBM format configure test for Clang |

Checks

Context Check Description
redhat-pt-bot/TryBot-apply_patch success Patch applied to master at the time it was sent
linaro-tcwg-bot/tcwg_glibc_build--master-aarch64 success Build passed
linaro-tcwg-bot/tcwg_glibc_build--master-arm success Build passed
linaro-tcwg-bot/tcwg_glibc_check--master-aarch64 success Test passed
linaro-tcwg-bot/tcwg_glibc_check--master-arm success Test passed

Commit Message

Matt Turner July 26, 2026, 6:43 p.m. UTC
  The check for -mlong-double-128 IBM extended format 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 with
Clang.

Use AC_LANG_SOURCE so the function is defined at file scope, and
regenerate configure.
---
 sysdeps/unix/sysv/linux/powerpc/configure    | 8 +-------
 sysdeps/unix/sysv/linux/powerpc/configure.ac | 3 ++-
 2 files changed, 3 insertions(+), 8 deletions(-)
  

Comments

Sam James Aug. 6, 2026, 10:11 p.m. UTC | #1
Matt Turner <mattst88@gmail.com> writes:

> The check for -mlong-double-128 IBM extended format 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 with
> Clang.
>
> Use AC_LANG_SOURCE so the function is defined at file scope, and
> regenerate configure.

Reviewed-by: Sam James <sam@gentoo.org>

> ---
>  sysdeps/unix/sysv/linux/powerpc/configure    | 8 +-------
>  sysdeps/unix/sysv/linux/powerpc/configure.ac | 3 ++-
>  2 files changed, 3 insertions(+), 8 deletions(-)
>
> diff --git ./sysdeps/unix/sysv/linux/powerpc/configure ./sysdeps/unix/sysv/linux/powerpc/configure
> index ef2055db92..eb8578404f 100644
> --- ./sysdeps/unix/sysv/linux/powerpc/configure
> +++ ./sysdeps/unix/sysv/linux/powerpc/configure
> @@ -12,18 +12,12 @@ else case e in #(
>  CFLAGS="$CFLAGS -mlong-double-128"
>  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
>  /* end confdefs.h.  */
> -#include <float.h>
> -int
> -main (void)
> -{
>  
> +#include <float.h>
>  #if LDBL_MANT_DIG != 106
>  # error "compiler doesn't implement IBM extended format of long double"
>  #endif
>  long double foobar (long double x) { return x; }
> -  ;
> -  return 0;
> -}
>  _ACEOF
>  if ac_fn_c_try_compile "$LINENO"
>  then :
> diff --git ./sysdeps/unix/sysv/linux/powerpc/configure.ac ./sysdeps/unix/sysv/linux/powerpc/configure.ac
> index 42347a66fc..ca0f82da08 100644
> --- ./sysdeps/unix/sysv/linux/powerpc/configure.ac
> +++ ./sysdeps/unix/sysv/linux/powerpc/configure.ac
> @@ -6,7 +6,8 @@ AC_CACHE_CHECK(whether $CC $CFLAGS -mlong-double-128 uses IBM extended format,
>  	       libc_cv_mlong_double_128ibm, [dnl
>  save_CFLAGS="$CFLAGS"
>  CFLAGS="$CFLAGS -mlong-double-128"
> -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <float.h>]], [[
> +AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
> +#include <float.h>
>  #if LDBL_MANT_DIG != 106
>  # error "compiler doesn't implement IBM extended format of long double"
>  #endif
  

Patch

diff --git ./sysdeps/unix/sysv/linux/powerpc/configure ./sysdeps/unix/sysv/linux/powerpc/configure
index ef2055db92..eb8578404f 100644
--- ./sysdeps/unix/sysv/linux/powerpc/configure
+++ ./sysdeps/unix/sysv/linux/powerpc/configure
@@ -12,18 +12,12 @@  else case e in #(
 CFLAGS="$CFLAGS -mlong-double-128"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <float.h>
-int
-main (void)
-{
 
+#include <float.h>
 #if LDBL_MANT_DIG != 106
 # error "compiler doesn't implement IBM extended format of long double"
 #endif
 long double foobar (long double x) { return x; }
-  ;
-  return 0;
-}
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
diff --git ./sysdeps/unix/sysv/linux/powerpc/configure.ac ./sysdeps/unix/sysv/linux/powerpc/configure.ac
index 42347a66fc..ca0f82da08 100644
--- ./sysdeps/unix/sysv/linux/powerpc/configure.ac
+++ ./sysdeps/unix/sysv/linux/powerpc/configure.ac
@@ -6,7 +6,8 @@  AC_CACHE_CHECK(whether $CC $CFLAGS -mlong-double-128 uses IBM extended format,
 	       libc_cv_mlong_double_128ibm, [dnl
 save_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -mlong-double-128"
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <float.h>]], [[
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+#include <float.h>
 #if LDBL_MANT_DIG != 106
 # error "compiler doesn't implement IBM extended format of long double"
 #endif