... where there are clear differences in behavior for OpenMP/USM run-time
configurations.
We shall further clarify all the intended semantics, once the implementation
begins to differentiate OpenMP 'requires unified_shared_memory' vs.
'requires self_maps'.
libgomp/
* testsuite/libgomp.c-c++-common/map-arrayofstruct-2-usm.c: New.
* testsuite/libgomp.c-c++-common/map-arrayofstruct-3-usm.c:
Likewise.
* testsuite/libgomp.c-c++-common/struct-elem-5-usm.c: Likewise.
* testsuite/libgomp.c-c++-common/target-present-1-usm.c: Likewise.
* testsuite/libgomp.c-c++-common/target-present-2-usm.c: Likewise.
* testsuite/libgomp.c-c++-common/target-present-3-usm.c: Likewise.
* testsuite/libgomp.fortran/map-subarray-5-usm.f90: Likewise.
* testsuite/libgomp.fortran/map-subarray-6-usm.f90: Likewise.
* testsuite/libgomp.fortran/map-subarray-7-usm.f90: Likewise.
* testsuite/libgomp.fortran/target-allocatable-1-1-usm.f90:
Likewise.
* testsuite/libgomp.fortran/target-allocatable-1-2-usm.f90:
Likewise.
* testsuite/libgomp.fortran/target-enter-data-2-usm.F90: Likewise.
* testsuite/libgomp.fortran/target-present-1-usm.f90: Likewise.
* testsuite/libgomp.fortran/target-present-2-usm.f90: Likewise.
* testsuite/libgomp.fortran/target-present-3-usm.f90: Likewise.
* testsuite/libgomp.fortran/target-allocatable-1-1.f90: Adjust.
* testsuite/libgomp.fortran/target-allocatable-1-2.f90: Likewise.
* testsuite/libgomp.fortran/target-present-1.f90: Likewise.
* testsuite/libgomp.fortran/target-present-2.f90: Likewise.
* testsuite/libgomp.fortran/target-present-3.f90: Likewise.
---
.../libgomp.c-c++-common/map-arrayofstruct-2-usm.c | 6 ++++++
.../libgomp.c-c++-common/map-arrayofstruct-3-usm.c | 6 ++++++
.../testsuite/libgomp.c-c++-common/struct-elem-5-usm.c | 6 ++++++
.../testsuite/libgomp.c-c++-common/target-present-1-usm.c | 6 ++++++
.../testsuite/libgomp.c-c++-common/target-present-2-usm.c | 6 ++++++
.../testsuite/libgomp.c-c++-common/target-present-3-usm.c | 6 ++++++
libgomp/testsuite/libgomp.fortran/map-subarray-5-usm.f90 | 8 ++++++++
libgomp/testsuite/libgomp.fortran/map-subarray-6-usm.f90 | 8 ++++++++
libgomp/testsuite/libgomp.fortran/map-subarray-7-usm.f90 | 6 ++++++
.../libgomp.fortran/target-allocatable-1-1-usm.f90 | 7 +++++++
.../testsuite/libgomp.fortran/target-allocatable-1-1.f90 | 4 ++++
.../libgomp.fortran/target-allocatable-1-2-usm.f90 | 7 +++++++
.../testsuite/libgomp.fortran/target-allocatable-1-2.f90 | 4 ++++
.../testsuite/libgomp.fortran/target-enter-data-2-usm.F90 | 7 +++++++
.../testsuite/libgomp.fortran/target-present-1-usm.f90 | 7 +++++++
libgomp/testsuite/libgomp.fortran/target-present-1.f90 | 6 ++++++
.../testsuite/libgomp.fortran/target-present-2-usm.f90 | 7 +++++++
libgomp/testsuite/libgomp.fortran/target-present-2.f90 | 6 ++++++
.../testsuite/libgomp.fortran/target-present-3-usm.f90 | 7 +++++++
libgomp/testsuite/libgomp.fortran/target-present-3.f90 | 6 ++++++
20 files changed, 126 insertions(+)
create mode 100644
libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-2-usm.c
create mode 100644
libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-3-usm.c
create mode 100644 libgomp/testsuite/libgomp.c-c++-common/struct-elem-5-usm.c
create mode 100644
libgomp/testsuite/libgomp.c-c++-common/target-present-1-usm.c
create mode 100644
libgomp/testsuite/libgomp.c-c++-common/target-present-2-usm.c
create mode 100644
libgomp/testsuite/libgomp.c-c++-common/target-present-3-usm.c
create mode 100644 libgomp/testsuite/libgomp.fortran/map-subarray-5-usm.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/map-subarray-6-usm.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/map-subarray-7-usm.f90
create mode 100644
libgomp/testsuite/libgomp.fortran/target-allocatable-1-1-usm.f90
create mode 100644
libgomp/testsuite/libgomp.fortran/target-allocatable-1-2-usm.f90
create mode 100644
libgomp/testsuite/libgomp.fortran/target-enter-data-2-usm.F90
create mode 100644 libgomp/testsuite/libgomp.fortran/target-present-1-usm.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/target-present-2-usm.f90
create mode 100644 libgomp/testsuite/libgomp.fortran/target-present-3-usm.f90
diff --git a/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-2-usm.c
b/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-2-usm.c
new file mode 100644
index 00000000000..751ab1b5b3d
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-2-usm.c
@@ -0,0 +1,6 @@
+/* { dg-require-effective-target omp_usm } */
+#pragma omp requires unified_shared_memory self_maps
+
+#include "map-arrayofstruct-2.c"
+
+/* No 'dg-shouldfail'. */
diff --git a/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-3-usm.c
b/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-3-usm.c
new file mode 100644
index 00000000000..4f8955f74e3
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-3-usm.c
@@ -0,0 +1,6 @@
+/* { dg-require-effective-target omp_usm } */
+#pragma omp requires unified_shared_memory self_maps
+
+#include "map-arrayofstruct-3.c"
+
+/* No 'dg-shouldfail'. */
diff --git a/libgomp/testsuite/libgomp.c-c++-common/struct-elem-5-usm.c
b/libgomp/testsuite/libgomp.c-c++-common/struct-elem-5-usm.c
new file mode 100644
index 00000000000..4a07f4bf62d
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c-c++-common/struct-elem-5-usm.c
@@ -0,0 +1,6 @@
+/* { dg-require-effective-target omp_usm } */
+#pragma omp requires unified_shared_memory self_maps
+
+#include "struct-elem-5.c"
+
+/* No 'dg-shouldfail'. */
diff --git a/libgomp/testsuite/libgomp.c-c++-common/target-present-1-usm.c
b/libgomp/testsuite/libgomp.c-c++-common/target-present-1-usm.c
new file mode 100644
index 00000000000..a8b0840da6e
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c-c++-common/target-present-1-usm.c
@@ -0,0 +1,6 @@
+/* { dg-require-effective-target omp_usm } */
+#pragma omp requires unified_shared_memory self_maps
+
+#include "target-present-1.c"
+
+/* No 'dg-shouldfail'. */
diff --git a/libgomp/testsuite/libgomp.c-c++-common/target-present-2-usm.c
b/libgomp/testsuite/libgomp.c-c++-common/target-present-2-usm.c
new file mode 100644
index 00000000000..f3b0eb27627
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c-c++-common/target-present-2-usm.c
@@ -0,0 +1,6 @@
+/* { dg-require-effective-target omp_usm } */
+#pragma omp requires unified_shared_memory self_maps
+
+#include "target-present-2.c"
+
+/* No 'dg-shouldfail'. */
diff --git a/libgomp/testsuite/libgomp.c-c++-common/target-present-3-usm.c
b/libgomp/testsuite/libgomp.c-c++-common/target-present-3-usm.c
new file mode 100644
index 00000000000..d270c98d448
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c-c++-common/target-present-3-usm.c
@@ -0,0 +1,6 @@
+/* { dg-require-effective-target omp_usm } */
+#pragma omp requires unified_shared_memory self_maps
+
+#include "target-present-3.c"
+
+/* No 'dg-shouldfail'. */
diff --git a/libgomp/testsuite/libgomp.fortran/map-subarray-5-usm.f90
b/libgomp/testsuite/libgomp.fortran/map-subarray-5-usm.f90
new file mode 100644
index 00000000000..7ece1f18956
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/map-subarray-5-usm.f90
@@ -0,0 +1,8 @@
+! { dg-do run }
+
+! { dg-require-effective-target omp_usm }
+!$omp requires unified_shared_memory self_maps
+
+include 'map-subarray-5.f90'
+
+! No 'dg-shouldfail'.
diff --git a/libgomp/testsuite/libgomp.fortran/map-subarray-6-usm.f90
b/libgomp/testsuite/libgomp.fortran/map-subarray-6-usm.f90
new file mode 100644
index 00000000000..f2c93fea283
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/map-subarray-6-usm.f90
@@ -0,0 +1,8 @@
+! { dg-do run }
+
+! { dg-require-effective-target omp_usm }
+!$omp requires unified_shared_memory self_maps
+
+include 'map-subarray-6.f90'
+
+! No 'dg-shouldfail'.
diff --git a/libgomp/testsuite/libgomp.fortran/map-subarray-7-usm.f90
b/libgomp/testsuite/libgomp.fortran/map-subarray-7-usm.f90
new file mode 100644
index 00000000000..c1310a8a3c4
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/map-subarray-7-usm.f90
@@ -0,0 +1,6 @@
+! { dg-require-effective-target omp_usm }
+!$omp requires unified_shared_memory self_maps
+
+include 'map-subarray-7.f90'
+
+! No 'dg-shouldfail'.
diff --git a/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1-usm.f90
b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1-usm.f90
new file mode 100644
index 00000000000..c31d39a0c49
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1-usm.f90
@@ -0,0 +1,7 @@
+! { dg-do run }
+! { dg-additional-options "-cpp" }
+! { dg-require-effective-target omp_usm }
+! { dg-additional-options "-DOMP_USM" }
+! { dg-additional-options "-DMEM_SHARED" }
+
+#include "target-allocatable-1-1.f90"
diff --git a/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1.f90
b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1.f90
index 429a855a20b..dc2ce645e23 100644
--- a/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1.f90
+++ b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1.f90
@@ -8,6 +8,10 @@
program main
implicit none
+#ifdef OMP_USM
+ !$omp requires unified_shared_memory self_maps
+#endif
+
integer, allocatable :: a, b, c, d, e
allocate (a)
diff --git a/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2-usm.f90
b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2-usm.f90
new file mode 100644
index 00000000000..26fc7554be3
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2-usm.f90
@@ -0,0 +1,7 @@
+! { dg-do run }
+! { dg-additional-options "-cpp" }
+! { dg-require-effective-target omp_usm }
+! { dg-additional-options "-DOMP_USM" }
+! { dg-additional-options "-DMEM_SHARED" }
+
+#include "target-allocatable-1-2.f90"
diff --git a/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2.f90
b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2.f90
index 5301c8eeffb..c5010a15ecf 100644
--- a/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2.f90
+++ b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2.f90
@@ -8,6 +8,10 @@
! { dg-additional-options "-DMEM_SHARED" { target offload_device_shared_as } }
module m
+#ifdef OMP_USM
+ !$omp requires unified_shared_memory self_maps
+#endif
+
contains
subroutine r (a, b, c, d, e)
implicit none
diff --git a/libgomp/testsuite/libgomp.fortran/target-enter-data-2-usm.F90
b/libgomp/testsuite/libgomp.fortran/target-enter-data-2-usm.F90
new file mode 100644
index 00000000000..4afad55c71d
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/target-enter-data-2-usm.F90
@@ -0,0 +1,7 @@
+! { dg-additional-options "-DMEM_SHARED" }
+! { dg-do run }
+
+! { dg-require-effective-target omp_usm }
+!$omp requires unified_shared_memory self_maps
+
+#include "target-enter-data-2.F90"
diff --git a/libgomp/testsuite/libgomp.fortran/target-present-1-usm.f90
b/libgomp/testsuite/libgomp.fortran/target-present-1-usm.f90
new file mode 100644
index 00000000000..e326ebc38b2
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/target-present-1-usm.f90
@@ -0,0 +1,7 @@
+! { dg-additional-options -cpp }
+! { dg-require-effective-target omp_usm }
+! { dg-additional-options -DOMP_USM }
+
+#include "target-present-1.f90"
+
+! No 'dg-shouldfail'.
diff --git a/libgomp/testsuite/libgomp.fortran/target-present-1.f90
b/libgomp/testsuite/libgomp.fortran/target-present-1.f90
index fc13609d528..f1950692758 100644
--- a/libgomp/testsuite/libgomp.fortran/target-present-1.f90
+++ b/libgomp/testsuite/libgomp.fortran/target-present-1.f90
@@ -1,5 +1,11 @@
+! { dg-additional-options -cpp }
+
program main
implicit none
+#ifdef OMP_USM
+ !$omp requires unified_shared_memory self_maps
+#endif
+
integer, parameter :: N = 100
integer :: a(N), b(N), c(N), i
diff --git a/libgomp/testsuite/libgomp.fortran/target-present-2-usm.f90
b/libgomp/testsuite/libgomp.fortran/target-present-2-usm.f90
new file mode 100644
index 00000000000..86236d3e8d6
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/target-present-2-usm.f90
@@ -0,0 +1,7 @@
+! { dg-additional-options -cpp }
+! { dg-require-effective-target omp_usm }
+! { dg-additional-options -DOMP_USM }
+
+#include "target-present-2.f90"
+
+! No 'dg-shouldfail'.
diff --git a/libgomp/testsuite/libgomp.fortran/target-present-2.f90
b/libgomp/testsuite/libgomp.fortran/target-present-2.f90
index 524d01d9465..dbb120e9d77 100644
--- a/libgomp/testsuite/libgomp.fortran/target-present-2.f90
+++ b/libgomp/testsuite/libgomp.fortran/target-present-2.f90
@@ -1,5 +1,11 @@
+! { dg-additional-options -cpp }
+
program main
implicit none
+#ifdef OMP_USM
+ !$omp requires unified_shared_memory self_maps
+#endif
+
integer, parameter :: N = 100
integer :: a(N), b(N), c(N), i
diff --git a/libgomp/testsuite/libgomp.fortran/target-present-3-usm.f90
b/libgomp/testsuite/libgomp.fortran/target-present-3-usm.f90
new file mode 100644
index 00000000000..55ebb802099
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/target-present-3-usm.f90
@@ -0,0 +1,7 @@
+! { dg-additional-options -cpp }
+! { dg-require-effective-target omp_usm }
+! { dg-additional-options -DOMP_USM }
+
+#include "target-present-3.f90"
+
+! No 'dg-shouldfail'.
diff --git a/libgomp/testsuite/libgomp.fortran/target-present-3.f90
b/libgomp/testsuite/libgomp.fortran/target-present-3.f90
index dd4af4c1651..3b8163961ce 100644
--- a/libgomp/testsuite/libgomp.fortran/target-present-3.f90
+++ b/libgomp/testsuite/libgomp.fortran/target-present-3.f90
@@ -1,5 +1,11 @@
+! { dg-additional-options -cpp }
+
program main
implicit none
+#ifdef OMP_USM
+ !$omp requires unified_shared_memory self_maps
+#endif
+
integer, parameter :: N = 100
integer :: a(N), b(N), c(N), i
--
2.34.1