On Fri, Feb 27, 2026 at 12:56 PM Tobias Burnus <[email protected]> wrote:
>
> Hi Jerry & Andre,
>
> the commit r16-7734-g136940891b16ba breaks cross compilation:
>
> Jerry D wrote:
> > From: Andre Vehreschild<[email protected]>
> > Date: Thu, 12 Feb 2026 11:17:47 -0800
> > Subject: [PATCH] Fortran: Add a shared memory coarray implementation
> > [PR88076]
> >
> > Add caf_shmem, a shared memory multi process coarray implementation.
> > The library adheres to the existing coarray ABI and is controlled by
> > environment variables for selecting the number of images and virtual
> > memory size.
> ...
> > libgfortran/ChangeLog:
> >
> > * Makefile.am: Add new library.
> > * Makefile.in: Regenerated
> > * acinclude.m4: Add check for reasonable clzl.
> > * config.h.in: Regenerate.
> > * configure: Regenerate.
> > * configure.ac: Call clzl check.
> * * *
> > --- a/libgfortran/acinclude.m4
> > +++ b/libgfortran/acinclude.m4
> ...
> > +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)])
> > +])
What does this test anyway? clzl (256) should not return 8 but 55.
Did you want to check c_T_zl here? I suggest to simply drop this given
it's broken?
Richard.
> This fails with:
>
> configure: error: in build-gcc-trunk-offload-amdgcn/amdgcn-amdhsa/libgfortran'
> configure: error: cannot run test program while cross compiling
>
> Namely, the generated configure file contains:
> > # 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
>
> In the code, you can either use code like:
> if test "$cross_compiling" != no; then
> for the current code and the following in an else branch.
> Or just the following:
>
> case "${host}" in
> *-*-mingw32*)
> ....
> ;;
> *)
> ....
> ;;
> esac
>
> In any case, AC_RUN_IFELSE is wrong for cross compilation,
> AC_COMPILE_IFELSE is fine.
>
> Tobias
>