From 063ca9f298f2b6d459a6712dd6a37feae79e2609 Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Fri, 23 Jan 2026 11:03:51 -0800 Subject: [PATCH 1/2] Adjust definition of PRIF_ATOMIC_{INTEGER,LOGICAL}_KIND * PRIF does not require these parameter values to have any particular kind. flang internally defines these parameters to be default integer, and gfortran generates spurious warnings when they are not so change them to default integer. * Add a HAVE_LOGICAL64 compile-time option to accomodate (theoretical) compilers that provide logical64 but lack selected_logical_kind. --- src/prif.F90 | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/prif.F90 b/src/prif.F90 index 1bd6d544..72d9f944 100644 --- a/src/prif.F90 +++ b/src/prif.F90 @@ -8,7 +8,9 @@ module prif use iso_c_binding, only: & c_char, c_int, c_bool, c_intptr_t, c_ptr, & c_funptr, c_size_t, c_ptrdiff_t, c_null_ptr, c_int64_t - +#if HAVE_LOGICAL64 + use iso_fortran_env, only: logical64 +#endif #if CAF_IMPORT_ATOMIC_CONSTANTS use iso_fortran_env, only: ATOMIC_INT_KIND, ATOMIC_LOGICAL_KIND #endif @@ -69,15 +71,17 @@ module prif integer(c_int), parameter, public :: PRIF_VERSION_MINOR = CAF_PRIF_VERSION_MINOR #if CAF_IMPORT_ATOMIC_CONSTANTS - integer(c_int), parameter, public :: PRIF_ATOMIC_INT_KIND = ATOMIC_INT_KIND - integer(c_int), parameter, public :: PRIF_ATOMIC_LOGICAL_KIND = ATOMIC_LOGICAL_KIND + integer, parameter, public :: PRIF_ATOMIC_INT_KIND = ATOMIC_INT_KIND + integer, parameter, public :: PRIF_ATOMIC_LOGICAL_KIND = ATOMIC_LOGICAL_KIND #else - integer(c_int), parameter, public :: PRIF_ATOMIC_INT_KIND = c_int64_t + integer, parameter, public :: PRIF_ATOMIC_INT_KIND = c_int64_t # if HAVE_SELECTED_LOGICAL_KIND - integer(c_int), parameter, public :: PRIF_ATOMIC_LOGICAL_KIND = selected_logical_kind(64) + integer, parameter, public :: PRIF_ATOMIC_LOGICAL_KIND = selected_logical_kind(64) +# elif HAVE_LOGICAL64 + integer, parameter, public :: PRIF_ATOMIC_LOGICAL_KIND = logical64 # else - integer(c_int), parameter, public :: PRIF_ATOMIC_LOGICAL_KIND = PRIF_ATOMIC_INT_KIND + integer, parameter, public :: PRIF_ATOMIC_LOGICAL_KIND = PRIF_ATOMIC_INT_KIND # endif #endif From b8906f6fede273742e988b42644ef0feb3dd497c Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Fri, 23 Jan 2026 11:11:39 -0800 Subject: [PATCH 2/2] Activate selected_logical_kind for gfortran 15+ This silences a (harmless) warning --- include/language-support.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/language-support.F90 b/include/language-support.F90 index b2099b80..7b4b9e1e 100644 --- a/include/language-support.F90 +++ b/include/language-support.F90 @@ -11,7 +11,7 @@ #ifndef HAVE_SELECTED_LOGICAL_KIND ! Define whether the compiler supports standard intrinsic function selected_logical_kind(), ! a feature introduced in Fortran 2023 clause 16.9.182. -#if defined(_CRAYFTN) || defined(NAGFOR) || defined(__flang__) +#if defined(_CRAYFTN) || defined(NAGFOR) || defined(__flang__) || (HAVE_GCC_VERSION >= 150000) #define HAVE_SELECTED_LOGICAL_KIND 1 #else #define HAVE_SELECTED_LOGICAL_KIND 0