Attached patch is to fix the subject PR. I am not set up to do cross compiling
so could not test that aspect.
Used autoconf 2.69 for that issue as well.
Regression tested on x86_64-linux.
OK for trunk?
Regards,
Jerry
Author: Jerry DeLisle <[email protected]>
Date: Sat Feb 28 17:30:41 2026 -0800
Fortran: Fix libfortran cannot be cross compiled [PR124286]
Remove unneeded check for a sane CLZL and regenerate using
the correct version of autoconf.
PR fortran/124286
libgfortran/ChangeLog:
* acinclude.m4: Remove LIBGFOR_CHECK_SANE_BUILTIN_CLZL.
* caf/shmem/allocator.c (next_power_of_two): Use known sane
builtin.
* configure: Regenerate.
* configure.ac: Remove use of LIBGFOR_CHECK_SANE_BUILTIN_CLZL.commit fd2f12ef226c369f54c351b7c6e319f1b6a7b010
Author: Jerry DeLisle <[email protected]>
Date: Sat Feb 28 17:30:41 2026 -0800
Fortran: Fix libfortran cannot be cross compiled [PR124286]
Remove unneeded check for a sane CLZL and regenerate using
the correct version of autoconf.
PR fortran/124286
libgfortran/ChangeLog:
* acinclude.m4: Remove LIBGFOR_CHECK_SANE_BUILTIN_CLZL.
* caf/shmem/allocator.c (next_power_of_two): Use known sane
builtin.
* configure: Regenerate.
* configure.ac: Remove use of LIBGFOR_CHECK_SANE_BUILTIN_CLZL.
diff --git a/libgfortran/acinclude.m4 b/libgfortran/acinclude.m4
index 13097b4ab92..239ab714750 100644
--- a/libgfortran/acinclude.m4
+++ b/libgfortran/acinclude.m4
@@ -579,14 +579,3 @@ main ()
fi
])
-AC_DEFUN([LIBGFOR_CHECK_SANE_BUILTIN_CLZL], [
- AC_RUN_IFELSE([AC_LANG_PROGRAM([[
- int main()
- {
- return __builtin_clzl(256) != 8;
- }]], [[]])],
- AC_DEFINE(HAVE_SANE_BUILTIN_CLZL, 1,
- [Define if __builtin_clzl behaves as expected.])
- AM_CONDITIONAL([HAVE_SANE_BUILTIN_CLZL],true),
- [AM_CONDITIONAL([HAVE_SANE_BUILTIN_CLZL],false)])
-])
diff --git a/libgfortran/caf/shmem/allocator.c b/libgfortran/caf/shmem/allocator.c
index bd88f33e200..795647cdbba 100644
--- a/libgfortran/caf/shmem/allocator.c
+++ b/libgfortran/caf/shmem/allocator.c
@@ -78,16 +78,8 @@ allocator_init_supervisor (allocator *a, allocator_shared *s, shared_memory sm)
static size_t
next_power_of_two (size_t size)
{
-#ifdef HAVE_SANE_BUILTIN_CLZL
- assert (size);
-#if (__INTPTR_WIDTH__ == 64)
- return 1 << (VOIDP_BITS - __builtin_clzl (size - 1));
-#else
- return 1 << (VOIDP_BITS - __builtin_clz (size - 1));
-#endif
-#else
- return 1 << (int)ceil(log2(size));
-#endif
+ assert (size != 1);
+ return (size_t)1 << (__SIZEOF_LONG_LONG__ * __CHAR_BIT__ - __builtin_clzll (size - 1));
}
shared_mem_ptr
diff --git a/libgfortran/configure b/libgfortran/configure
index 798db4eca3a..68f111a6d48 100755
--- a/libgfortran/configure
+++ b/libgfortran/configure
@@ -637,8 +637,6 @@ am__EXEEXT_TRUE
LTLIBOBJS
LIBOBJS
get_gcc_base_ver
-HAVE_SANE_BUILTIN_CLZL_FALSE
-HAVE_SANE_BUILTIN_CLZL_TRUE
HAVE_AVX128_FALSE
HAVE_AVX128_TRUE
tmake_file
@@ -13520,7 +13518,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 13523 "configure"
+#line 13521 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -13626,7 +13624,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 13629 "configure"
+#line 13627 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -32790,57 +32788,6 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
CFLAGS="$ac_save_CFLAGS"
-# Check if __builtin_clzl behaves (it doesn't on Msys2/ucrt64).
-
- if test "$cross_compiling" = yes; then :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- int main()
- {
- return __builtin_clzl(256) != 8;
- }
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-$as_echo "#define HAVE_SANE_BUILTIN_CLZL 1" >>confdefs.h
-
- if true; then
- HAVE_SANE_BUILTIN_CLZL_TRUE=
- HAVE_SANE_BUILTIN_CLZL_FALSE='#'
-else
- HAVE_SANE_BUILTIN_CLZL_TRUE='#'
- HAVE_SANE_BUILTIN_CLZL_FALSE=
-fi
-
-else
- if false; then
- HAVE_SANE_BUILTIN_CLZL_TRUE=
- HAVE_SANE_BUILTIN_CLZL_FALSE='#'
-else
- HAVE_SANE_BUILTIN_CLZL_TRUE='#'
- HAVE_SANE_BUILTIN_CLZL_FALSE=
-fi
-
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-
-
# Determine what GCC version number to use in filesystem paths.
get_gcc_base_ver="cat"
@@ -33148,14 +33095,6 @@ if test -z "${HAVE_AVX128_TRUE}" && test -z "${HAVE_AVX128_FALSE}"; then
as_fn_error $? "conditional \"HAVE_AVX128\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${HAVE_SANE_BUILTIN_CLZL_TRUE}" && test -z "${HAVE_SANE_BUILTIN_CLZL_FALSE}"; then
- as_fn_error $? "conditional \"HAVE_SANE_BUILTIN_CLZL\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_SANE_BUILTIN_CLZL_TRUE}" && test -z "${HAVE_SANE_BUILTIN_CLZL_FALSE}"; then
- as_fn_error $? "conditional \"HAVE_SANE_BUILTIN_CLZL\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac
index fea8292225b..530d15f0152 100644
--- a/libgfortran/configure.ac
+++ b/libgfortran/configure.ac
@@ -799,9 +799,6 @@ LIBGFOR_CHECK_FMA4
# Check if AVX128 works
LIBGFOR_CHECK_AVX128
-# Check if __builtin_clzl behaves (it doesn't on Msys2/ucrt64).
-LIBGFOR_CHECK_SANE_BUILTIN_CLZL
-
# Determine what GCC version number to use in filesystem paths.
GCC_BASE_VER