]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fortran: Add a shared memory coarray implementation [PR88076]
authorAndre Vehreschild <vehre@gcc.gnu.org>
Thu, 12 Feb 2026 19:17:47 +0000 (11:17 -0800)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Thu, 26 Feb 2026 17:18:24 +0000 (09:18 -0800)
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.

Co-authored by:  Thomas Koenig  <tkoenig@gcc.gnu.org>
 Nicolas Koenig  <koenigni@gcc.gnu.org>

PR fortran/88076

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.

libgfortran/Makefile.am
libgfortran/Makefile.in
libgfortran/acinclude.m4
libgfortran/config.h.in
libgfortran/configure
libgfortran/configure.ac

index 46e7df5e728f3b6508de4fcf82cf534544df7775..c5c0fa5717cfa388dea3ea9f1795521cfac5e1ac 100644 (file)
@@ -58,13 +58,30 @@ libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
        $(version_arg) -Wc,-shared-libgcc
 libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP)
 
-cafexeclib_LTLIBRARIES = libcaf_single.la
+libcaf_shared_DEPS = caf/libcaf.h caf/caf_error.h
+libcaf_shared_SRCS = caf/caf_error.c
+
+cafexeclib_LTLIBRARIES = libcaf_single.la libcaf_shmem.la
 cafexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)
-libcaf_single_la_SOURCES = caf/single.c
+libcaf_single_la_SOURCES = caf/single.c $(libcaf_shared_SRCS)
 libcaf_single_la_LDFLAGS = -static
-libcaf_single_la_DEPENDENCIES = caf/libcaf.h
+libcaf_single_la_DEPENDENCIES = $(libcaf_shared_DEPS)
 libcaf_single_la_LINK = $(LINK) $(libcaf_single_la_LDFLAGS)
 
+libcaf_shmem_la_SOURCES = $(libcaf_shared_SRCS) \
+       caf/shmem.c caf/shmem/alloc.c caf/shmem/allocator.c \
+       caf/shmem/collective_subroutine.c caf/shmem/counter_barrier.c \
+       caf/shmem/hashmap.c caf/shmem/shared_memory.c caf/shmem/supervisor.c \
+       caf/shmem/sync.c caf/shmem/teams_mgmt.c caf/shmem/thread_support.c
+
+libcaf_shmem_la_LDFLAGS = -static
+libcaf_shmem_la_DEPENDENCIES = $(libcaf_shared_DEPS) caf/shmem/alloc.h \
+       caf/shmem/allocator.h caf/shmem/collective_subroutine.h \
+       caf/shmem/counter_barrier.h caf/shmem/hashmap.h \
+       caf/shmem/shared_memory.h caf/shmem/supervisor.h caf/shmem/sync.h \
+       caf/shmem/teams_mgmt.h caf/shmem/thread_support.h
+libcaf_shmem_la_LINK = $(LINK) $(libcaf_shmem_la_LDFLAGS)
+
 if IEEE_SUPPORT
 fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude
 nodist_finclude_HEADERS = ieee_arithmetic.mod ieee_exceptions.mod ieee_features.mod
index 63c880cddcbb00e99a97b5c1ca4aebbe0c5cd6a9..9272fa86741ad5b9e25c56ed0cdb62994bf5ae85 100644 (file)
@@ -219,21 +219,31 @@ am__installdirs = "$(DESTDIR)$(cafexeclibdir)" \
        "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibdir)" \
        "$(DESTDIR)$(gfor_cdir)" "$(DESTDIR)$(fincludedir)"
 LTLIBRARIES = $(cafexeclib_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
-libcaf_single_la_LIBADD =
+libcaf_shmem_la_LIBADD =
 am__dirstamp = $(am__leading_dot)dirstamp
-am_libcaf_single_la_OBJECTS = caf/single.lo
+am__objects_1 = caf/caf_error.lo
+am_libcaf_shmem_la_OBJECTS = $(am__objects_1) caf/shmem.lo \
+       caf/shmem/alloc.lo caf/shmem/allocator.lo \
+       caf/shmem/collective_subroutine.lo \
+       caf/shmem/counter_barrier.lo caf/shmem/hashmap.lo \
+       caf/shmem/shared_memory.lo caf/shmem/supervisor.lo \
+       caf/shmem/sync.lo caf/shmem/teams_mgmt.lo \
+       caf/shmem/thread_support.lo
+libcaf_shmem_la_OBJECTS = $(am_libcaf_shmem_la_OBJECTS)
+libcaf_single_la_LIBADD =
+am_libcaf_single_la_OBJECTS = caf/single.lo $(am__objects_1)
 libcaf_single_la_OBJECTS = $(am_libcaf_single_la_OBJECTS)
 libgfortran_la_LIBADD =
-@LIBGFOR_MINIMAL_TRUE@am__objects_1 = runtime/minimal.lo
-@LIBGFOR_MINIMAL_FALSE@am__objects_2 = runtime/backtrace.lo \
+@LIBGFOR_MINIMAL_TRUE@am__objects_2 = runtime/minimal.lo
+@LIBGFOR_MINIMAL_FALSE@am__objects_3 = runtime/backtrace.lo \
 @LIBGFOR_MINIMAL_FALSE@        runtime/convert_char.lo \
 @LIBGFOR_MINIMAL_FALSE@        runtime/environ.lo runtime/error.lo \
 @LIBGFOR_MINIMAL_FALSE@        runtime/fpu.lo runtime/main.lo \
 @LIBGFOR_MINIMAL_FALSE@        runtime/pause.lo runtime/stop.lo
-am__objects_3 = runtime/bounds.lo runtime/compile_options.lo \
+am__objects_4 = runtime/bounds.lo runtime/compile_options.lo \
        runtime/deep_copy.lo runtime/memory.lo runtime/string.lo \
-       runtime/select.lo $(am__objects_1) $(am__objects_2)
-am__objects_4 = generated/matmul_i1.lo generated/matmul_i2.lo \
+       runtime/select.lo $(am__objects_2) $(am__objects_3)
+am__objects_5 = generated/matmul_i1.lo generated/matmul_i2.lo \
        generated/matmul_i4.lo generated/matmul_i8.lo \
        generated/matmul_i16.lo generated/matmul_r4.lo \
        generated/matmul_r8.lo generated/matmul_r10.lo \
@@ -241,9 +251,9 @@ am__objects_4 = generated/matmul_i1.lo generated/matmul_i2.lo \
        generated/matmul_c4.lo generated/matmul_c8.lo \
        generated/matmul_c10.lo generated/matmul_c16.lo \
        generated/matmul_c17.lo
-am__objects_5 = generated/matmul_l4.lo generated/matmul_l8.lo \
+am__objects_6 = generated/matmul_l4.lo generated/matmul_l8.lo \
        generated/matmul_l16.lo
-am__objects_6 = generated/matmulavx128_i1.lo \
+am__objects_7 = generated/matmulavx128_i1.lo \
        generated/matmulavx128_i2.lo generated/matmulavx128_i4.lo \
        generated/matmulavx128_i8.lo generated/matmulavx128_i16.lo \
        generated/matmulavx128_r4.lo generated/matmulavx128_r8.lo \
@@ -251,7 +261,7 @@ am__objects_6 = generated/matmulavx128_i1.lo \
        generated/matmulavx128_r17.lo generated/matmulavx128_c4.lo \
        generated/matmulavx128_c8.lo generated/matmulavx128_c10.lo \
        generated/matmulavx128_c16.lo generated/matmulavx128_c17.lo
-am__objects_7 = generated/all_l1.lo generated/all_l2.lo \
+am__objects_8 = generated/all_l1.lo generated/all_l2.lo \
        generated/all_l4.lo generated/all_l8.lo generated/all_l16.lo \
        generated/any_l1.lo generated/any_l2.lo generated/any_l4.lo \
        generated/any_l8.lo generated/any_l16.lo \
@@ -540,17 +550,17 @@ am__objects_7 = generated/all_l1.lo generated/all_l2.lo \
        generated/pow_m8_m16.lo generated/pow_m16_m1.lo \
        generated/pow_m16_m2.lo generated/pow_m16_m4.lo \
        generated/pow_m16_m8.lo generated/pow_m16_m16.lo \
-       $(am__objects_4) $(am__objects_5) $(am__objects_6) \
+       $(am__objects_5) $(am__objects_6) $(am__objects_7) \
        runtime/ISO_Fortran_binding.lo
-@LIBGFOR_MINIMAL_FALSE@am__objects_8 = io/close.lo io/file_pos.lo \
+@LIBGFOR_MINIMAL_FALSE@am__objects_9 = io/close.lo io/file_pos.lo \
 @LIBGFOR_MINIMAL_FALSE@        io/format.lo io/inquire.lo \
 @LIBGFOR_MINIMAL_FALSE@        io/intrinsics.lo io/list_read.lo \
 @LIBGFOR_MINIMAL_FALSE@        io/lock.lo io/open.lo io/read.lo \
 @LIBGFOR_MINIMAL_FALSE@        io/transfer.lo io/transfer128.lo \
 @LIBGFOR_MINIMAL_FALSE@        io/unit.lo io/unix.lo io/write.lo \
 @LIBGFOR_MINIMAL_FALSE@        io/fbuf.lo io/async.lo
-am__objects_9 = io/size_from_kind.lo $(am__objects_8)
-@LIBGFOR_MINIMAL_FALSE@am__objects_10 = intrinsics/access.lo \
+am__objects_10 = io/size_from_kind.lo $(am__objects_9)
+@LIBGFOR_MINIMAL_FALSE@am__objects_11 = intrinsics/access.lo \
 @LIBGFOR_MINIMAL_FALSE@        intrinsics/c99_functions.lo \
 @LIBGFOR_MINIMAL_FALSE@        intrinsics/chdir.lo intrinsics/chmod.lo \
 @LIBGFOR_MINIMAL_FALSE@        intrinsics/clock.lo \
@@ -574,8 +584,8 @@ am__objects_9 = io/size_from_kind.lo $(am__objects_8)
 @LIBGFOR_MINIMAL_FALSE@        intrinsics/system_clock.lo \
 @LIBGFOR_MINIMAL_FALSE@        intrinsics/time.lo intrinsics/umask.lo \
 @LIBGFOR_MINIMAL_FALSE@        intrinsics/unlink.lo
-@IEEE_SUPPORT_TRUE@am__objects_11 = ieee/ieee_helper.lo
-am__objects_12 = intrinsics/associated.lo intrinsics/abort.lo \
+@IEEE_SUPPORT_TRUE@am__objects_12 = ieee/ieee_helper.lo
+am__objects_13 = intrinsics/associated.lo intrinsics/abort.lo \
        intrinsics/args.lo intrinsics/cshift0.lo \
        intrinsics/eoshift0.lo intrinsics/eoshift2.lo \
        intrinsics/erfc_scaled.lo intrinsics/extends_type_of.lo \
@@ -590,12 +600,12 @@ am__objects_12 = intrinsics/associated.lo intrinsics/abort.lo \
        intrinsics/selected_real_kind.lo intrinsics/trigd.lo \
        intrinsics/unpack_generic.lo runtime/in_pack_generic.lo \
        runtime/in_unpack_generic.lo runtime/in_pack_class.lo \
-       runtime/in_unpack_class.lo $(am__objects_10) $(am__objects_11)
-@IEEE_SUPPORT_TRUE@am__objects_13 = ieee/ieee_arithmetic.lo \
+       runtime/in_unpack_class.lo $(am__objects_11) $(am__objects_12)
+@IEEE_SUPPORT_TRUE@am__objects_14 = ieee/ieee_arithmetic.lo \
 @IEEE_SUPPORT_TRUE@    ieee/ieee_exceptions.lo \
 @IEEE_SUPPORT_TRUE@    ieee/ieee_features.lo
-am__objects_14 =
-am__objects_15 = generated/_abs_c4.lo generated/_abs_c8.lo \
+am__objects_15 =
+am__objects_16 = generated/_abs_c4.lo generated/_abs_c8.lo \
        generated/_abs_c10.lo generated/_abs_c16.lo \
        generated/_abs_c17.lo generated/_abs_i4.lo \
        generated/_abs_i8.lo generated/_abs_i16.lo \
@@ -681,9 +691,9 @@ am__objects_15 = generated/_abs_c4.lo generated/_abs_c8.lo \
        generated/_mod_r17.lo generated/misc_specifics.lo \
        intrinsics/dprod_r8.lo intrinsics/f2c_specifics.lo \
        intrinsics/random_init.lo
-am_libgfortran_la_OBJECTS = $(am__objects_3) $(am__objects_7) \
-       $(am__objects_9) $(am__objects_12) $(am__objects_13) \
-       $(am__objects_14) $(am__objects_15)
+am_libgfortran_la_OBJECTS = $(am__objects_4) $(am__objects_8) \
+       $(am__objects_10) $(am__objects_13) $(am__objects_14) \
+       $(am__objects_15) $(am__objects_16)
 libgfortran_la_OBJECTS = $(am_libgfortran_la_OBJECTS)
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -748,7 +758,8 @@ AM_V_FC = $(am__v_FC_@AM_V@)
 am__v_FC_ = $(am__v_FC_@AM_DEFAULT_V@)
 am__v_FC_0 = @echo "  FC      " $@;
 am__v_FC_1 = 
-SOURCES = $(libcaf_single_la_SOURCES) $(libgfortran_la_SOURCES)
+SOURCES = $(libcaf_shmem_la_SOURCES) $(libcaf_single_la_SOURCES) \
+       $(libgfortran_la_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -965,12 +976,28 @@ libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
        $(version_arg) -Wc,-shared-libgcc
 
 libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP)
-cafexeclib_LTLIBRARIES = libcaf_single.la
+libcaf_shared_DEPS = caf/libcaf.h caf/caf_error.h
+libcaf_shared_SRCS = caf/caf_error.c
+cafexeclib_LTLIBRARIES = libcaf_single.la libcaf_shmem.la
 cafexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)
-libcaf_single_la_SOURCES = caf/single.c
+libcaf_single_la_SOURCES = caf/single.c $(libcaf_shared_SRCS)
 libcaf_single_la_LDFLAGS = -static
-libcaf_single_la_DEPENDENCIES = caf/libcaf.h
+libcaf_single_la_DEPENDENCIES = $(libcaf_shared_DEPS)
 libcaf_single_la_LINK = $(LINK) $(libcaf_single_la_LDFLAGS)
+libcaf_shmem_la_SOURCES = $(libcaf_shared_SRCS) \
+       caf/shmem.c caf/shmem/alloc.c caf/shmem/allocator.c \
+       caf/shmem/collective_subroutine.c caf/shmem/counter_barrier.c \
+       caf/shmem/hashmap.c caf/shmem/shared_memory.c caf/shmem/supervisor.c \
+       caf/shmem/sync.c caf/shmem/teams_mgmt.c caf/shmem/thread_support.c
+
+libcaf_shmem_la_LDFLAGS = -static
+libcaf_shmem_la_DEPENDENCIES = $(libcaf_shared_DEPS) caf/shmem/alloc.h \
+       caf/shmem/allocator.h caf/shmem/collective_subroutine.h \
+       caf/shmem/counter_barrier.h caf/shmem/hashmap.h \
+       caf/shmem/shared_memory.h caf/shmem/supervisor.h caf/shmem/sync.h \
+       caf/shmem/teams_mgmt.h caf/shmem/thread_support.h
+
+libcaf_shmem_la_LINK = $(LINK) $(libcaf_shmem_la_LDFLAGS)
 @IEEE_SUPPORT_TRUE@fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude
 @IEEE_SUPPORT_TRUE@nodist_finclude_HEADERS = ieee_arithmetic.mod ieee_exceptions.mod ieee_features.mod
 AM_CPPFLAGS = -iquote$(srcdir)/io -I$(srcdir)/$(MULTISRCTOP)../gcc \
@@ -1967,6 +1994,37 @@ caf/$(am__dirstamp):
 caf/$(DEPDIR)/$(am__dirstamp):
        @$(MKDIR_P) caf/$(DEPDIR)
        @: > caf/$(DEPDIR)/$(am__dirstamp)
+caf/caf_error.lo: caf/$(am__dirstamp) caf/$(DEPDIR)/$(am__dirstamp)
+caf/shmem.lo: caf/$(am__dirstamp) caf/$(DEPDIR)/$(am__dirstamp)
+caf/shmem/$(am__dirstamp):
+       @$(MKDIR_P) caf/shmem
+       @: > caf/shmem/$(am__dirstamp)
+caf/shmem/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) caf/shmem/$(DEPDIR)
+       @: > caf/shmem/$(DEPDIR)/$(am__dirstamp)
+caf/shmem/alloc.lo: caf/shmem/$(am__dirstamp) \
+       caf/shmem/$(DEPDIR)/$(am__dirstamp)
+caf/shmem/allocator.lo: caf/shmem/$(am__dirstamp) \
+       caf/shmem/$(DEPDIR)/$(am__dirstamp)
+caf/shmem/collective_subroutine.lo: caf/shmem/$(am__dirstamp) \
+       caf/shmem/$(DEPDIR)/$(am__dirstamp)
+caf/shmem/counter_barrier.lo: caf/shmem/$(am__dirstamp) \
+       caf/shmem/$(DEPDIR)/$(am__dirstamp)
+caf/shmem/hashmap.lo: caf/shmem/$(am__dirstamp) \
+       caf/shmem/$(DEPDIR)/$(am__dirstamp)
+caf/shmem/shared_memory.lo: caf/shmem/$(am__dirstamp) \
+       caf/shmem/$(DEPDIR)/$(am__dirstamp)
+caf/shmem/supervisor.lo: caf/shmem/$(am__dirstamp) \
+       caf/shmem/$(DEPDIR)/$(am__dirstamp)
+caf/shmem/sync.lo: caf/shmem/$(am__dirstamp) \
+       caf/shmem/$(DEPDIR)/$(am__dirstamp)
+caf/shmem/teams_mgmt.lo: caf/shmem/$(am__dirstamp) \
+       caf/shmem/$(DEPDIR)/$(am__dirstamp)
+caf/shmem/thread_support.lo: caf/shmem/$(am__dirstamp) \
+       caf/shmem/$(DEPDIR)/$(am__dirstamp)
+
+libcaf_shmem.la: $(libcaf_shmem_la_OBJECTS) $(libcaf_shmem_la_DEPENDENCIES) $(EXTRA_libcaf_shmem_la_DEPENDENCIES)
+       $(AM_V_GEN)$(libcaf_shmem_la_LINK) -rpath $(cafexeclibdir) $(libcaf_shmem_la_OBJECTS) $(libcaf_shmem_la_LIBADD) $(LIBS)
 caf/single.lo: caf/$(am__dirstamp) caf/$(DEPDIR)/$(am__dirstamp)
 
 libcaf_single.la: $(libcaf_single_la_OBJECTS) $(libcaf_single_la_DEPENDENCIES) $(EXTRA_libcaf_single_la_DEPENDENCIES) 
@@ -3776,6 +3834,8 @@ mostlyclean-compile:
        -rm -f *.$(OBJEXT)
        -rm -f caf/*.$(OBJEXT)
        -rm -f caf/*.lo
+       -rm -f caf/shmem/*.$(OBJEXT)
+       -rm -f caf/shmem/*.lo
        -rm -f generated/*.$(OBJEXT)
        -rm -f generated/*.lo
        -rm -f ieee/*.$(OBJEXT)
@@ -3790,7 +3850,19 @@ mostlyclean-compile:
 distclean-compile:
        -rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@caf/$(DEPDIR)/caf_error.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@caf/$(DEPDIR)/shmem.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@caf/$(DEPDIR)/single.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@caf/shmem/$(DEPDIR)/alloc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@caf/shmem/$(DEPDIR)/allocator.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@caf/shmem/$(DEPDIR)/collective_subroutine.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@caf/shmem/$(DEPDIR)/counter_barrier.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@caf/shmem/$(DEPDIR)/hashmap.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@caf/shmem/$(DEPDIR)/shared_memory.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@caf/shmem/$(DEPDIR)/supervisor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@caf/shmem/$(DEPDIR)/sync.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@caf/shmem/$(DEPDIR)/teams_mgmt.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@caf/shmem/$(DEPDIR)/thread_support.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@generated/$(DEPDIR)/all_l1.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@generated/$(DEPDIR)/all_l16.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@generated/$(DEPDIR)/all_l2.Plo@am__quote@
@@ -4556,6 +4628,7 @@ mostlyclean-libtool:
 clean-libtool:
        -rm -rf .libs _libs
        -rm -rf caf/.libs caf/_libs
+       -rm -rf caf/shmem/.libs caf/shmem/_libs
        -rm -rf generated/.libs generated/_libs
        -rm -rf ieee/.libs ieee/_libs
        -rm -rf intrinsics/.libs intrinsics/_libs
@@ -4723,6 +4796,8 @@ distclean-generic:
        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
        -rm -f caf/$(DEPDIR)/$(am__dirstamp)
        -rm -f caf/$(am__dirstamp)
+       -rm -f caf/shmem/$(DEPDIR)/$(am__dirstamp)
+       -rm -f caf/shmem/$(am__dirstamp)
        -rm -f generated/$(DEPDIR)/$(am__dirstamp)
        -rm -f generated/$(am__dirstamp)
        -rm -f ieee/$(DEPDIR)/$(am__dirstamp)
@@ -4745,7 +4820,7 @@ clean-am: clean-cafexeclibLTLIBRARIES clean-generic clean-libtool \
 
 distclean: distclean-am
        -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-       -rm -rf caf/$(DEPDIR) generated/$(DEPDIR) ieee/$(DEPDIR) intrinsics/$(DEPDIR) io/$(DEPDIR) runtime/$(DEPDIR)
+       -rm -rf caf/$(DEPDIR) caf/shmem/$(DEPDIR) generated/$(DEPDIR) ieee/$(DEPDIR) intrinsics/$(DEPDIR) io/$(DEPDIR) runtime/$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-hdr distclean-libtool distclean-local distclean-tags
@@ -4794,7 +4869,7 @@ installcheck-am:
 maintainer-clean: maintainer-clean-am
        -rm -f $(am__CONFIG_DISTCLEAN_FILES)
        -rm -rf $(top_srcdir)/autom4te.cache
-       -rm -rf caf/$(DEPDIR) generated/$(DEPDIR) ieee/$(DEPDIR) intrinsics/$(DEPDIR) io/$(DEPDIR) runtime/$(DEPDIR)
+       -rm -rf caf/$(DEPDIR) caf/shmem/$(DEPDIR) generated/$(DEPDIR) ieee/$(DEPDIR) intrinsics/$(DEPDIR) io/$(DEPDIR) runtime/$(DEPDIR)
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic \
        maintainer-clean-local
index 23fd621e5188faaf40c5c42dc927670ae98da174..13097b4ab926bf6d07f02c4d4bc5a75693b8c947 100644 (file)
@@ -578,3 +578,15 @@ main ()
                        [Define to 1 if you have the `$1' function.])
   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)])
+])
index da2c44c1af1a6d56d810d7e564a2aebdaa99309e..1a66ee7e5134273faddb54d70e78c3dcae2ae3de 100644 (file)
 /* Define to 1 if you have the `mkstemp' function. */
 #undef HAVE_MKSTEMP
 
+/* Define to 1 if you have the `mmap' function. */
+#undef HAVE_MMAP
+
 /* Define to 1 if you have the `newlocale' function. */
 #undef HAVE_NEWLOCALE
 
 /* Define to 1 if you have the `roundl' function. */
 #undef HAVE_ROUNDL
 
+/* Define if __builtin_clzl behaves as expected. */
+#undef HAVE_SANE_BUILTIN_CLZL
+
 /* Define to 1 if you have the `scalbn' function. */
 #undef HAVE_SCALBN
 
 /* Define to 1 if you have the `secure_getenv' function. */
 #undef HAVE_SECURE_GETENV
 
+/* Define to 1 if you have the `setenv' function. */
+#undef HAVE_SETENV
+
 /* Define to 1 if you have the `setmode' function. */
 #undef HAVE_SETMODE
 
 /* Define to 1 if you have the `symlink' function. */
 #undef HAVE_SYMLINK
 
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#undef HAVE_SYS_MMAN_H
+
 /* Define to 1 if you have the <sys/random.h> header file. */
 #undef HAVE_SYS_RANDOM_H
 
index 38d6c3cf3a04c85701748381274e68cf4e7ca9f5..6227e5bee7401e61c4c97146ad7dd096e38904a2 100755 (executable)
@@ -637,6 +637,8 @@ 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
@@ -2620,6 +2622,7 @@ as_fn_append ac_header_list " fpxcp.h"
 as_fn_append ac_header_list " pwd.h"
 as_fn_append ac_header_list " complex.h"
 as_fn_append ac_header_list " xlocale.h"
+as_fn_append ac_header_list " sys/mman.h"
 as_fn_append ac_func_list " getrusage"
 as_fn_append ac_func_list " times"
 as_fn_append ac_func_list " mkstemp"
@@ -2639,6 +2642,8 @@ as_fn_append ac_func_list " sleep"
 as_fn_append ac_func_list " ttyname"
 as_fn_append ac_func_list " sigaction"
 as_fn_append ac_func_list " waitpid"
+as_fn_append ac_func_list " mmap"
+as_fn_append ac_func_list " setenv"
 as_fn_append ac_func_list " alarm"
 as_fn_append ac_func_list " access"
 as_fn_append ac_func_list " fork"
@@ -13236,7 +13241,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 13239 "configure"
+#line 13244 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -13342,7 +13347,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 13345 "configure"
+#line 13350 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -17127,6 +17132,8 @@ done
 
 
 
+
+
 
 
 
@@ -17728,6 +17735,10 @@ done
 
 
 
+
+
+
+
 
 
 
@@ -31827,6 +31838,57 @@ 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"
@@ -32118,6 +32180,14 @@ 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
index cca1ea0ea9704139c63be87cd315c93e412295e6..b165dff1e050a698d8e0d49da9b1ea90a7f0d595 100644 (file)
@@ -298,7 +298,7 @@ AC_CHECK_TYPES([ptrdiff_t])
 AC_CHECK_HEADERS_ONCE(unistd.h sys/random.h sys/time.h sys/times.h \
 sys/resource.h sys/types.h sys/stat.h sys/uio.h sys/wait.h \
 floatingpoint.h ieeefp.h fenv.h fptrap.h \
-fpxcp.h pwd.h complex.h xlocale.h)
+fpxcp.h pwd.h complex.h xlocale.h sys/mman.h)
 
 GCC_HEADER_STDINT(gstdint.h)
 
@@ -334,7 +334,7 @@ if test "${hardwire_newlib:-0}" -eq 1; then
 else
    AC_CHECK_FUNCS_ONCE(getrusage times mkstemp strtof strtold snprintf \
    ftruncate chsize chdir getentropy getlogin gethostname kill link symlink \
-   sleep ttyname sigaction waitpid \
+   sleep ttyname sigaction waitpid mmap setenv\
    alarm access fork posix_spawn setmode fcntl writev \
    gettimeofday stat fstat lstat getpwuid vsnprintf dup \
    getcwd localtime_r gmtime_r getpwuid_r ttyname_r clock_gettime \
@@ -789,6 +789,9 @@ 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