Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion include/language-support.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
16 changes: 10 additions & 6 deletions src/prif.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand Down