]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Enhance 'libgomp.c-c++-common/requires-4.c', 'libgomp.c-c++-common/requires-5.c'...
authorThomas Schwinge <thomas@codesourcery.com>
Thu, 7 Jul 2022 07:45:42 +0000 (09:45 +0200)
committerThomas Schwinge <thomas@codesourcery.com>
Thu, 7 Jul 2022 10:38:51 +0000 (12:38 +0200)
These should compile and link and execute in all configurations; host-fallback
execution, which we may actually verify.

Follow-up to recent commit 683f11843974f0bdf42f79cdcbb0c2b43c7b81b0
"OpenMP: Move omp requires checks to libgomp".

libgomp/
* testsuite/libgomp.c-c++-common/requires-4.c: Enhance testing.
* testsuite/libgomp.c-c++-common/requires-5.c: Likewise.

libgomp/testsuite/libgomp.c-c++-common/requires-4.c
libgomp/testsuite/libgomp.c-c++-common/requires-5.c

index 128fdbb8463d640faf76f1a31cc04fc57ceb54ec..6ed5a5f647a8b5656f7b3cb944843097d6f38626 100644 (file)
@@ -1,22 +1,33 @@
-/* { dg-do link { target offloading_enabled } } */
 /* { dg-additional-options "-flto" } */
 /* { dg-additional-sources requires-4-aux.c } */
 
-/* Check diagnostic by device-compiler's or host compiler's lto1.
+/* Check no diagnostic by device-compiler's or host compiler's lto1.
    Other file uses: 'requires reverse_offload', but that's inactive as
    there are no declare target directives, device constructs nor device routines  */
 
+/* Depending on offload device capabilities, it may print something like the
+   following (only) if GOMP_DEBUG=1:
+   "devices present but 'omp requires unified_address, unified_shared_memory, reverse_offload' cannot be fulfilled"
+   and in that case does host-fallback execution.
+
+   No offload devices support USM at present, so we may verify host-fallback
+   execution by presence of separate memory spaces.  */
+
 #pragma omp requires unified_address,unified_shared_memory
 
-int a[10];
+int a[10] = { 0 };
 extern void foo (void);
 
 int
 main (void)
 {
-  #pragma omp target
+  #pragma omp target map(to: a)
+  for (int i = 0; i < 10; i++)
+    a[i] = i;
+
   for (int i = 0; i < 10; i++)
-    a[i] = 0;
+    if (a[i] != i)
+      __builtin_abort ();
 
   foo ();
   return 0;
index c1e5540cfc51c2b6b46dafb5b41a022a0fc41df5..7fe0c735d277e8acd7de610358b8970546901e10 100644 (file)
@@ -1,21 +1,29 @@
-/* { dg-do run { target { offload_target_nvptx || offload_target_amdgcn } } } */
 /* { dg-additional-sources requires-5-aux.c } */
 
+/* Depending on offload device capabilities, it may print something like the
+   following (only) if GOMP_DEBUG=1:
+   "devices present but 'omp requires unified_address, unified_shared_memory, reverse_offload' cannot be fulfilled"
+   and in that case does host-fallback execution.
+
+   As no offload devices support USM at present, we may verify host-fallback
+   execution by absence of separate memory spaces.  */
+
 #pragma omp requires unified_shared_memory, unified_address, reverse_offload
 
-int a[10];
+int a[10] = { 0 };
 extern void foo (void);
 
 int
 main (void)
 {
-  #pragma omp target
+  #pragma omp target map(to: a)
   for (int i = 0; i < 10; i++)
-    a[i] = 0;
+    a[i] = i;
+
+  for (int i = 0; i < 10; i++)
+    if (a[i] != i)
+      __builtin_abort ();
 
   foo ();
   return 0;
 }
-
-/* (Only) if GOMP_DEBUG=1, should print at runtime the following:
-   "devices present but 'omp requires unified_address, unified_shared_memory, reverse_offload' cannot be fulfilled" */