Re: 'Call clzl check' breaks cross compilation (was: PATCH 13/22] Coarray caf_shmem final patch set)

Richard Biener <[email protected]>
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <CAFiYyc2kH-y_ve1Wq1dsWOnCXD1apj-zZZ1rm=hA7bbYWJA9bQ@mail.gmail.com>
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
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.