https://gcc.gnu.org/g:94334a764b073fe5011db1a53bc5693b30b57fae

commit 94334a764b073fe5011db1a53bc5693b30b57fae
Author: Thomas Schwinge <tschwi...@baylibre.com>
Date:   Fri May 30 11:37:46 2025 +0200

    libgomp: Add testcases for concurrent access to standard C++ containers on 
offload targets, a number of USM variants
    
            libgomp/
            * testsuite/libgomp.c++/target-std__array-concurrent-usm.C: New.
            * testsuite/libgomp.c++/target-std__array-concurrent.C: Adjust.
            * testsuite/libgomp.c++/target-std__bitset-concurrent-usm.C: New.
            * testsuite/libgomp.c++/target-std__bitset-concurrent.C: Adjust.
            * testsuite/libgomp.c++/target-std__deque-concurrent-usm.C: New.
            * testsuite/libgomp.c++/target-std__deque-concurrent.C: Adjust.
            * testsuite/libgomp.c++/target-std__forward_list-concurrent-usm.C: 
New.
            * testsuite/libgomp.c++/target-std__forward_list-concurrent.C: 
Adjust.
            * testsuite/libgomp.c++/target-std__list-concurrent-usm.C: New.
            * testsuite/libgomp.c++/target-std__list-concurrent.C: Adjust.
            * testsuite/libgomp.c++/target-std__map-concurrent-usm.C: New.
            * testsuite/libgomp.c++/target-std__map-concurrent.C: Adjust.
            * testsuite/libgomp.c++/target-std__multimap-concurrent-usm.C: New.
            * testsuite/libgomp.c++/target-std__multimap-concurrent.C: Adjust.
            * testsuite/libgomp.c++/target-std__multiset-concurrent-usm.C: New.
            * testsuite/libgomp.c++/target-std__multiset-concurrent.C: Adjust.
            * testsuite/libgomp.c++/target-std__set-concurrent-usm.C: New.
            * testsuite/libgomp.c++/target-std__set-concurrent.C: Adjust.
            * testsuite/libgomp.c++/target-std__span-concurrent-usm.C: New.
            * testsuite/libgomp.c++/target-std__span-concurrent.C: Adjust.
            * testsuite/libgomp.c++/target-std__valarray-concurrent-usm.C: New.
            * testsuite/libgomp.c++/target-std__valarray-concurrent.C: Adjust.
            * testsuite/libgomp.c++/target-std__vector-concurrent-usm.C: New.
            * testsuite/libgomp.c++/target-std__vector-concurrent.C: Adjust.
    
    (cherry picked from commit 83ca283853f195a08d2f758580a369bc6a076122)

Diff:
---
 libgomp/testsuite/libgomp.c++/target-std__array-concurrent-usm.C   | 5 +++++
 libgomp/testsuite/libgomp.c++/target-std__array-concurrent.C       | 2 ++
 libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent-usm.C  | 5 +++++
 libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent.C      | 2 ++
 libgomp/testsuite/libgomp.c++/target-std__deque-concurrent-usm.C   | 5 +++++
 libgomp/testsuite/libgomp.c++/target-std__deque-concurrent.C       | 2 ++
 .../libgomp.c++/target-std__forward_list-concurrent-usm.C          | 5 +++++
 .../testsuite/libgomp.c++/target-std__forward_list-concurrent.C    | 2 ++
 libgomp/testsuite/libgomp.c++/target-std__list-concurrent-usm.C    | 5 +++++
 libgomp/testsuite/libgomp.c++/target-std__list-concurrent.C        | 2 ++
 libgomp/testsuite/libgomp.c++/target-std__map-concurrent-usm.C     | 5 +++++
 libgomp/testsuite/libgomp.c++/target-std__map-concurrent.C         | 4 ++++
 .../testsuite/libgomp.c++/target-std__multimap-concurrent-usm.C    | 5 +++++
 libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent.C    | 4 ++++
 .../testsuite/libgomp.c++/target-std__multiset-concurrent-usm.C    | 5 +++++
 libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent.C    | 2 ++
 libgomp/testsuite/libgomp.c++/target-std__set-concurrent-usm.C     | 5 +++++
 libgomp/testsuite/libgomp.c++/target-std__set-concurrent.C         | 2 ++
 libgomp/testsuite/libgomp.c++/target-std__span-concurrent-usm.C    | 7 +++++++
 libgomp/testsuite/libgomp.c++/target-std__span-concurrent.C        | 4 ++++
 .../testsuite/libgomp.c++/target-std__valarray-concurrent-usm.C    | 5 +++++
 libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent.C    | 2 ++
 libgomp/testsuite/libgomp.c++/target-std__vector-concurrent-usm.C  | 5 +++++
 libgomp/testsuite/libgomp.c++/target-std__vector-concurrent.C      | 2 ++
 24 files changed, 92 insertions(+)

diff --git a/libgomp/testsuite/libgomp.c++/target-std__array-concurrent-usm.C 
b/libgomp/testsuite/libgomp.c++/target-std__array-concurrent-usm.C
new file mode 100644
index 000000000000..9923783bcb12
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c++/target-std__array-concurrent-usm.C
@@ -0,0 +1,5 @@
+#pragma omp requires unified_shared_memory self_maps
+
+#define MEM_SHARED
+
+#include "target-std__array-concurrent.C"
diff --git a/libgomp/testsuite/libgomp.c++/target-std__array-concurrent.C 
b/libgomp/testsuite/libgomp.c++/target-std__array-concurrent.C
index e97bfe60a615..c42105a65ed6 100644
--- a/libgomp/testsuite/libgomp.c++/target-std__array-concurrent.C
+++ b/libgomp/testsuite/libgomp.c++/target-std__array-concurrent.C
@@ -33,7 +33,9 @@ int main (void)
   srand (time (NULL));
   init (data);
 
+#ifndef MEM_SHARED
   #pragma omp target data map (to: data[:N]) map (alloc: arr)
+#endif
     {
       #pragma omp target
        {
diff --git a/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent-usm.C 
b/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent-usm.C
new file mode 100644
index 000000000000..9023ef85c55b
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent-usm.C
@@ -0,0 +1,5 @@
+#pragma omp requires unified_shared_memory self_maps
+
+#define MEM_SHARED
+
+#include "target-std__bitset-concurrent.C"
diff --git a/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent.C 
b/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent.C
index aa27662314bf..4fcce9321728 100644
--- a/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent.C
+++ b/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent.C
@@ -40,7 +40,9 @@ int main (void)
   srand (time (NULL));
   init (data);
 
+#ifndef MEM_SHARED
   #pragma omp target data map (to: data[:N]) map (alloc: _set)
+#endif
     {
       #pragma omp target
        {
diff --git a/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent-usm.C 
b/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent-usm.C
new file mode 100644
index 000000000000..863a1de76874
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent-usm.C
@@ -0,0 +1,5 @@
+#pragma omp requires unified_shared_memory self_maps
+
+#define MEM_SHARED
+
+#include "target-std__deque-concurrent.C"
diff --git a/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent.C 
b/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent.C
index 5f08bfb002b2..9c2d6fa57b41 100644
--- a/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent.C
+++ b/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent.C
@@ -38,7 +38,9 @@ int main (void)
   std::deque<int> _deque;
 #endif
 
+#ifndef MEM_SHARED
   #pragma omp target data map (to: data[:N]) map (alloc: _deque)
+#endif
     {
 #ifndef MEM_SHARED
       #pragma omp target
diff --git 
a/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent-usm.C 
b/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent-usm.C
new file mode 100644
index 000000000000..60d5cee5ef36
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent-usm.C
@@ -0,0 +1,5 @@
+#pragma omp requires unified_shared_memory self_maps
+
+#define MEM_SHARED
+
+#include "target-std__forward_list-concurrent.C"
diff --git 
a/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent.C 
b/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent.C
index f8ab53e30df2..6b0ee65493e2 100644
--- a/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent.C
+++ b/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent.C
@@ -43,7 +43,9 @@ int main (void)
   std::forward_list<int> list;
 #endif
 
+#ifndef MEM_SHARED
   #pragma omp target data map (to: data[:N]) map (alloc: list)
+#endif
     {
 #ifndef MEM_SHARED
       #pragma omp target
diff --git a/libgomp/testsuite/libgomp.c++/target-std__list-concurrent-usm.C 
b/libgomp/testsuite/libgomp.c++/target-std__list-concurrent-usm.C
new file mode 100644
index 000000000000..5057bf96fef6
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c++/target-std__list-concurrent-usm.C
@@ -0,0 +1,5 @@
+#pragma omp requires unified_shared_memory self_maps
+
+#define MEM_SHARED
+
+#include "target-std__list-concurrent.C"
diff --git a/libgomp/testsuite/libgomp.c++/target-std__list-concurrent.C 
b/libgomp/testsuite/libgomp.c++/target-std__list-concurrent.C
index ce3b4265ee04..1f44a17ca091 100644
--- a/libgomp/testsuite/libgomp.c++/target-std__list-concurrent.C
+++ b/libgomp/testsuite/libgomp.c++/target-std__list-concurrent.C
@@ -43,7 +43,9 @@ int main (void)
   std::list<int> _list;
 #endif
 
+#ifndef MEM_SHARED
   #pragma omp target data map (to: data[:N]) map (alloc: _list)
+#endif
     {
 #ifndef MEM_SHARED
       #pragma omp target
diff --git a/libgomp/testsuite/libgomp.c++/target-std__map-concurrent-usm.C 
b/libgomp/testsuite/libgomp.c++/target-std__map-concurrent-usm.C
new file mode 100644
index 000000000000..fe37426b8c80
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c++/target-std__map-concurrent-usm.C
@@ -0,0 +1,5 @@
+#pragma omp requires unified_shared_memory self_maps
+
+#define MEM_SHARED
+
+#include "target-std__map-concurrent.C"
diff --git a/libgomp/testsuite/libgomp.c++/target-std__map-concurrent.C 
b/libgomp/testsuite/libgomp.c++/target-std__map-concurrent.C
index 254c490afdbb..36556ef0660a 100644
--- a/libgomp/testsuite/libgomp.c++/target-std__map-concurrent.C
+++ b/libgomp/testsuite/libgomp.c++/target-std__map-concurrent.C
@@ -38,7 +38,9 @@ int main (void)
   init (keys, true);
   init (data, false);
 
+#ifndef MEM_SHARED
   #pragma omp target enter data map (to: keys[:N], data[:N]) map (alloc: _map)
+#endif
 
   #pragma omp target
     {
@@ -59,7 +61,9 @@ int main (void)
     _map.~map ();
 #endif
 
+#ifndef MEM_SHARED
   #pragma omp target exit data map (release: _map)
+#endif
 
   bool ok = validate (sum, keys, data);
   return ok ? 0 : 1;
diff --git 
a/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent-usm.C 
b/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent-usm.C
new file mode 100644
index 000000000000..79f9245117f4
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent-usm.C
@@ -0,0 +1,5 @@
+#pragma omp requires unified_shared_memory self_maps
+
+#define MEM_SHARED
+
+#include "target-std__multimap-concurrent.C"
diff --git a/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent.C 
b/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent.C
index 65e6732cba3d..6a4a4e80d34e 100644
--- a/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent.C
+++ b/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent.C
@@ -32,7 +32,9 @@ int main (void)
   init (keys, KEY_MAX);
   init (data, RAND_MAX);
 
+#ifndef MEM_SHARED
   #pragma omp target enter data map (to: keys[:N], data[:N]) map (alloc: _map)
+#endif
 
   #pragma omp target
     {
@@ -57,7 +59,9 @@ int main (void)
     _map.~multimap ();
 #endif
 
+#ifndef MEM_SHARED
   #pragma omp target exit data map (release: _map)
+#endif
 
   bool ok = validate (sum, keys, data);
   return ok ? 0 : 1;
diff --git 
a/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent-usm.C 
b/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent-usm.C
new file mode 100644
index 000000000000..2d8075663bd3
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent-usm.C
@@ -0,0 +1,5 @@
+#pragma omp requires unified_shared_memory self_maps
+
+#define MEM_SHARED
+
+#include "target-std__multiset-concurrent.C"
diff --git a/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent.C 
b/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent.C
index 0b16ca53953f..b12402e8e0c3 100644
--- a/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent.C
+++ b/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent.C
@@ -34,7 +34,9 @@ int main (void)
   srand (time (NULL));
   init (data);
 
+#ifndef MEM_SHARED
   #pragma omp target data map (to: data[:N]) map (alloc: set)
+#endif
     {
       #pragma omp target
        {
diff --git a/libgomp/testsuite/libgomp.c++/target-std__set-concurrent-usm.C 
b/libgomp/testsuite/libgomp.c++/target-std__set-concurrent-usm.C
new file mode 100644
index 000000000000..54f62e3e84ba
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c++/target-std__set-concurrent-usm.C
@@ -0,0 +1,5 @@
+#pragma omp requires unified_shared_memory self_maps
+
+#define MEM_SHARED
+
+#include "target-std__set-concurrent.C"
diff --git a/libgomp/testsuite/libgomp.c++/target-std__set-concurrent.C 
b/libgomp/testsuite/libgomp.c++/target-std__set-concurrent.C
index 6953b6352a21..cd23128a652f 100644
--- a/libgomp/testsuite/libgomp.c++/target-std__set-concurrent.C
+++ b/libgomp/testsuite/libgomp.c++/target-std__set-concurrent.C
@@ -39,7 +39,9 @@ int main (void)
   srand (time (NULL));
   init (data);
 
+#ifndef MEM_SHARED
   #pragma omp target data map (to: data[:N]) map (alloc: _set)
+#endif
     {
       #pragma omp target
        {
diff --git a/libgomp/testsuite/libgomp.c++/target-std__span-concurrent-usm.C 
b/libgomp/testsuite/libgomp.c++/target-std__span-concurrent-usm.C
new file mode 100644
index 000000000000..7ef16bfb574c
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c++/target-std__span-concurrent-usm.C
@@ -0,0 +1,7 @@
+// { dg-additional-options "-std=c++20" }
+
+#pragma omp requires unified_shared_memory self_maps
+
+#define MEM_SHARED
+
+#include "target-std__span-concurrent.C"
diff --git a/libgomp/testsuite/libgomp.c++/target-std__span-concurrent.C 
b/libgomp/testsuite/libgomp.c++/target-std__span-concurrent.C
index ac89a8980c62..046b3c1a0868 100644
--- a/libgomp/testsuite/libgomp.c++/target-std__span-concurrent.C
+++ b/libgomp/testsuite/libgomp.c++/target-std__span-concurrent.C
@@ -34,7 +34,9 @@ int main (void)
   srand (time (NULL));
   init (data);
 
+#ifndef MEM_SHARED
   #pragma omp target enter data map (to: data[:N]) map (alloc: elements, span)
+#endif
 
   #pragma omp target
     {
@@ -56,7 +58,9 @@ int main (void)
 #endif
     }
 
+#ifndef MEM_SHARED
   #pragma omp target exit data map (release: elements, span)
+#endif
 
   return ok ? 0 : 1;
 }
diff --git 
a/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent-usm.C 
b/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent-usm.C
new file mode 100644
index 000000000000..41ec80ee900d
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent-usm.C
@@ -0,0 +1,5 @@
+#pragma omp requires unified_shared_memory self_maps
+
+#define MEM_SHARED
+
+#include "target-std__valarray-concurrent.C"
diff --git a/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent.C 
b/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent.C
index 127aec436f51..8933072bb2b2 100644
--- a/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent.C
+++ b/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent.C
@@ -37,7 +37,9 @@ int main (void)
   std::valarray<int> arr;
 #endif
 
+#ifndef MEM_SHARED
   #pragma omp target data map (to: data[:N]) map (alloc: arr)
+#endif
     {
       #pragma omp target
        {
diff --git a/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent-usm.C 
b/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent-usm.C
new file mode 100644
index 000000000000..967bff3b81ad
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent-usm.C
@@ -0,0 +1,5 @@
+#pragma omp requires unified_shared_memory self_maps
+
+#define MEM_SHARED
+
+#include "target-std__vector-concurrent.C"
diff --git a/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent.C 
b/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent.C
index 1367f9655275..a94b4cfe9645 100644
--- a/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent.C
+++ b/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent.C
@@ -37,7 +37,9 @@ int main (void)
   std::vector<int> vec;
 #endif
 
+#ifndef MEM_SHARED
   #pragma omp target data map (to: data[:N]) map (alloc: vec)
+#endif
     {
 #ifndef MEM_SHARED
       #pragma omp target

Reply via email to