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 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