diff mbox series

libomp: Add omp_depend_kind to omp_lib.{f90,h}

Message ID 6615746d-4fb4-9702-8197-9efd927208b2@codesourcery.com
State New
Headers show
Series libomp: Add omp_depend_kind to omp_lib.{f90,h} | expand

Commit Message

Tobias Burnus July 23, 2020, 12:42 p.m. UTC
As just discussed,* this patch adds omp_depend_kind
to Fortran's omp_lib.{h,f90}.
I fixed a problem in omp_lib.h (which as already fixed
in the module version) and I added a sizeof check,
which I missed when adding the other items previously.

OK?

Tobias
* https://gcc.gnu.org/pipermail/gcc-patches/2020-July/550517.html

-----------------
Mentor Graphics (Deutschland) GmbH, Arnulfstraße 201, 80634 München / Germany
Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Alexander Walter

Comments

Jakub Jelinek July 23, 2020, 12:46 p.m. UTC | #1
On Thu, Jul 23, 2020 at 02:42:25PM +0200, Tobias Burnus wrote:
> libomp: Add omp_depend_kind to omp_lib.{f90,h}
> 
> gcc/fortran/ChangeLog:
> 
> 	* intrinsic.texi (OMP_LIB_KINDS): Add omp_depend_kind.
> 
> libgomp/ChangeLog:
> 
> 	* configure.ac: Add OMP_DEPEND_KIND and OMP_INT128_SIZE.

Do you need
> +AC_SUBST(OMP_INT128_SIZE)
this for anything?  I don't see @OMP_INT128_SIZE@ ever used anywhere.

Otherwise LGTM.

	Jakub
diff mbox series

Patch

libomp: Add omp_depend_kind to omp_lib.{f90,h}

gcc/fortran/ChangeLog:

	* intrinsic.texi (OMP_LIB_KINDS): Add omp_depend_kind.

libgomp/ChangeLog:

	* configure.ac: Add OMP_DEPEND_KIND and OMP_INT128_SIZE.
	* libgomp_f.h.in (omp_check_defines): Check whether
	sizeof of determined Fortran kind and C typedef match.
	* omp_lib.f90.in: Add omp_depened_kind.
	* omp_lib.h.in: Likewise; fix omp_alloctrait_key_kind.
	* configure: Regenerate.
	* Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.

 gcc/fortran/intrinsic.texi    |  1 +
 libgomp/Makefile.in           |  2 ++
 libgomp/configure             | 31 +++++++++++++++++++++++++++++--
 libgomp/configure.ac          | 14 ++++++++++++++
 libgomp/libgomp_f.h.in        |  7 ++++++-
 libgomp/omp_lib.f90.in        |  1 +
 libgomp/omp_lib.h.in          |  4 +++-
 libgomp/testsuite/Makefile.in |  2 ++
 8 files changed, 58 insertions(+), 4 deletions(-)

diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi
index 1b93d251509..6268feca70c 100644
--- a/gcc/fortran/intrinsic.texi
+++ b/gcc/fortran/intrinsic.texi
@@ -15317,6 +15317,7 @@  named constants:
 @item @code{omp_allocator_handle_kind}
 @item @code{omp_alloctrait_key_kind}
 @item @code{omp_alloctrait_val_kind}
+@item @code{omp_depend_kind}
 @item @code{omp_lock_kind}
 @item @code{omp_lock_hint_kind}
 @item @code{omp_nest_lock_kind}
diff --git a/libgomp/configure.ac b/libgomp/configure.ac
index d1034dab7f8..dc840754ca1 100644
--- a/libgomp/configure.ac
+++ b/libgomp/configure.ac
@@ -396,6 +396,9 @@  for i in $config_path; do
 done
 
 _AC_COMPUTE_INT([sizeof (__INTPTR_TYPE__)], [INTPTR_T_KIND])
+_AC_COMPUTE_INT([sizeof (__int128)], [OMP_INT128_SIZE],,[OMP_INT128_SIZE=0])
+_AC_COMPUTE_INT([2*sizeof (__INTPTR_TYPE__)], [OMP_DEPEND_KIND],,
+		[OMP_DEPEND_KIND=0])
 _AC_COMPUTE_INT([sizeof (omp_lock_t)], [OMP_LOCK_SIZE],,
   [AC_MSG_ERROR([unsupported system, cannot find sizeof (omp_lock_t)])])
 _AC_COMPUTE_INT([__alignof (omp_lock_t)], [OMP_LOCK_ALIGN])
@@ -428,6 +431,15 @@  fi
 if test $OMP_NEST_LOCK_25_SIZE -gt 8 || test $OMP_NEST_LOCK_25_ALIGN -gt $OMP_NEST_LOCK_25_SIZE; then
   OMP_NEST_LOCK_25_KIND=8
 fi
+if test $OMP_DEPEND_KIND -eq 16; then
+  if $OMP_INT128_SIZE -ne 16; then
+    AC_MSG_ERROR([unsupported system, cannot find Fortran int kind=16, needed for omp_depend_kind])
+  fi
+else
+  if test $OMP_DEPEND_KIND -ne 8; then
+    AC_MSG_ERROR([unsupported system, cannot find Fortran integer kind for omp_depend_kind])
+  fi
+fi
 
 AC_SUBST(INTPTR_T_KIND)
 AC_SUBST(OMP_LOCK_SIZE)
@@ -442,6 +454,8 @@  AC_SUBST(OMP_NEST_LOCK_25_SIZE)
 AC_SUBST(OMP_NEST_LOCK_25_ALIGN)
 AC_SUBST(OMP_LOCK_25_KIND)
 AC_SUBST(OMP_NEST_LOCK_25_KIND)
+AC_SUBST(OMP_INT128_SIZE)
+AC_SUBST(OMP_DEPEND_KIND)
 CFLAGS="$save_CFLAGS"
 
 # Determine what GCC version number to use in filesystem paths.
diff --git a/libgomp/libgomp_f.h.in b/libgomp/libgomp_f.h.in
index 3359352a0b4..d629503b8da 100644
--- a/libgomp/libgomp_f.h.in
+++ b/libgomp/libgomp_f.h.in
@@ -79,7 +79,12 @@  omp_check_defines (void)
 	     || @OMP_NEST_LOCK_SIZE@ != sizeof (omp_nest_lock_t)
 	     || @OMP_NEST_LOCK_ALIGN@ != __alignof (omp_nest_lock_t)
 	     || @OMP_LOCK_KIND@ != sizeof (*(omp_lock_arg_t) 0)
-	     || @OMP_NEST_LOCK_KIND@ != sizeof (*(omp_nest_lock_arg_t) 0))
+	     || @OMP_NEST_LOCK_KIND@ != sizeof (*(omp_nest_lock_arg_t) 0)
+	     || @INTPTR_T_KIND@ != sizeof (omp_allocator_handle_t)
+	     || 4 != sizeof (omp_alloctrait_key_t)
+	     || @INTPTR_T_KIND@ != sizeof (omp_alloctrait_value_t)
+	     || @INTPTR_T_KIND@ != sizeof (omp_memspace_handle_t)
+	     || @OMP_DEPEND_KIND@ != sizeof (omp_depend_t))
 	    ? -1 : 1] __attribute__ ((__unused__));
   char test2[(@OMP_LOCK_25_SIZE@ != sizeof (omp_lock_25_t)
 	     || @OMP_LOCK_25_ALIGN@ != __alignof (omp_lock_25_t)
diff --git a/libgomp/omp_lib.f90.in b/libgomp/omp_lib.f90.in
index b22bcbaf770..3ec31ac1f1f 100644
--- a/libgomp/omp_lib.f90.in
+++ b/libgomp/omp_lib.f90.in
@@ -38,6 +38,7 @@ 
         integer, parameter :: omp_alloctrait_key_kind = c_int
         integer, parameter :: omp_alloctrait_val_kind = c_intptr_t
         integer, parameter :: omp_memspace_handle_kind = c_intptr_t
+        integer, parameter :: omp_depend_kind = @OMP_DEPEND_KIND@
         integer (omp_sched_kind), parameter :: omp_sched_static = 1
         integer (omp_sched_kind), parameter :: omp_sched_dynamic = 2
         integer (omp_sched_kind), parameter :: omp_sched_guided = 3
diff --git a/libgomp/omp_lib.h.in b/libgomp/omp_lib.h.in
index c7d444d4a97..26dbe03a629 100644
--- a/libgomp/omp_lib.h.in
+++ b/libgomp/omp_lib.h.in
@@ -26,6 +26,8 @@ 
       integer omp_lock_kind, omp_nest_lock_kind, openmp_version
       parameter (omp_lock_kind = @OMP_LOCK_KIND@)
       parameter (omp_nest_lock_kind = @OMP_NEST_LOCK_KIND@)
+      integer omp_depend_kind
+      parameter (omp_depend_kind = @OMP_DEPEND_KIND@)
       integer omp_sched_kind
       parameter (omp_sched_kind = 4)
       integer (omp_sched_kind) omp_sched_static, omp_sched_dynamic
@@ -81,7 +83,7 @@ 
       integer omp_allocator_handle_kind, omp_alloctrait_key_kind
       integer omp_alloctrait_val_kind, omp_memspace_handle_kind
       parameter (omp_allocator_handle_kind = @INTPTR_T_KIND@)
-      parameter (omp_alloctrait_key_kind = @INTPTR_T_KIND@)
+      parameter (omp_alloctrait_key_kind = 4)
       parameter (omp_alloctrait_val_kind = @INTPTR_T_KIND@)
       parameter (omp_memspace_handle_kind = @INTPTR_T_KIND@)
       integer (omp_alloctrait_key_kind) omp_atk_sync_hint
diff --git a/libgomp/Makefile.in b/libgomp/Makefile.in
index bc044b1820a..38d44983d7e 100644
--- a/libgomp/Makefile.in
+++ b/libgomp/Makefile.in
@@ -421,6 +421,8 @@  NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OMP_DEPEND_KIND = @OMP_DEPEND_KIND@
+OMP_INT128_SIZE = @OMP_INT128_SIZE@
 OMP_LOCK_25_ALIGN = @OMP_LOCK_25_ALIGN@
 OMP_LOCK_25_KIND = @OMP_LOCK_25_KIND@
 OMP_LOCK_25_SIZE = @OMP_LOCK_25_SIZE@
diff --git a/libgomp/configure b/libgomp/configure
index d85023f4f05..e9746d8dafb 100755
--- a/libgomp/configure
+++ b/libgomp/configure
@@ -635,6 +635,8 @@  am__EXEEXT_TRUE
 LTLIBOBJS
 LIBOBJS
 get_gcc_base_ver
+OMP_DEPEND_KIND
+OMP_INT128_SIZE
 OMP_NEST_LOCK_25_KIND
 OMP_LOCK_25_KIND
 OMP_NEST_LOCK_25_ALIGN
@@ -11434,7 +11436,7 @@  else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11437 "configure"
+#line 11439 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11540,7 +11542,7 @@  else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11543 "configure"
+#line 11545 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -16968,6 +16970,20 @@  if ac_fn_c_compute_int "$LINENO" "sizeof (__INTPTR_TYPE__)" "INTPTR_T_KIND"
 fi
 
 
+if ac_fn_c_compute_int "$LINENO" "sizeof (__int128)" "OMP_INT128_SIZE"        ""; then :
+
+else
+  OMP_INT128_SIZE=0
+fi
+
+
+if ac_fn_c_compute_int "$LINENO" "2*sizeof (__INTPTR_TYPE__)" "OMP_DEPEND_KIND"        ""; then :
+
+else
+  OMP_DEPEND_KIND=0
+fi
+
+
 if ac_fn_c_compute_int "$LINENO" "sizeof (omp_lock_t)" "OMP_LOCK_SIZE"        ""; then :
 
 else
@@ -17034,6 +17050,17 @@  fi
 if test $OMP_NEST_LOCK_25_SIZE -gt 8 || test $OMP_NEST_LOCK_25_ALIGN -gt $OMP_NEST_LOCK_25_SIZE; then
   OMP_NEST_LOCK_25_KIND=8
 fi
+if test $OMP_DEPEND_KIND -eq 16; then
+  if $OMP_INT128_SIZE -ne 16; then
+    as_fn_error $? "unsupported system, cannot find Fortran int kind=16, needed for omp_depend_kind" "$LINENO" 5
+  fi
+else
+  if test $OMP_DEPEND_KIND -ne 8; then
+    as_fn_error $? "unsupported system, cannot find Fortran integer kind for omp_depend_kind" "$LINENO" 5
+  fi
+fi
+
+
 
 
 
diff --git a/libgomp/testsuite/Makefile.in b/libgomp/testsuite/Makefile.in
index bbec6aeca00..ff9149e7030 100644
--- a/libgomp/testsuite/Makefile.in
+++ b/libgomp/testsuite/Makefile.in
@@ -186,6 +186,8 @@  NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OMP_DEPEND_KIND = @OMP_DEPEND_KIND@
+OMP_INT128_SIZE = @OMP_INT128_SIZE@
 OMP_LOCK_25_ALIGN = @OMP_LOCK_25_ALIGN@
 OMP_LOCK_25_KIND = @OMP_LOCK_25_KIND@
 OMP_LOCK_25_SIZE = @OMP_LOCK_25_SIZE@