xref: /llvm-project/openmp/runtime/test/target/issue-81488.c (revision 41ca9104ac1e0bf248d4082f45c5ad03ddd55727)
1 // RUN: %libomp-compile
2 // RUN: env OMP_NUM_THREADS=1 LIBOMP_USE_HIDDEN_HELPER_TASK=1 \
3 // RUN:     LIBOMP_NUM_HIDDEN_HELPER_THREADS=8 %libomp-run
4 
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include <omp.h>
8 
9 #define Nz 8
10 #define DEVICE_ID 0
11 
12 int a[Nz];
13 
main(void)14 int main(void) {
15   for (int n = 0; n < 10; ++n) {
16     for (int k = 0; k < Nz; ++k) {
17       a[k] = -1;
18     }
19 #pragma omp parallel shared(a)
20     {
21 #pragma omp single
22       {
23 #pragma omp target teams distribute parallel for nowait device(DEVICE_ID)      \
24     map(tofrom : a[0 : 8])
25         for (int i = 0; i < Nz; ++i) {
26           a[i] = i;
27         }
28       }
29 #pragma omp barrier
30     }
31     for (int k = 0; k < Nz; ++k) {
32       printf("a[%d] = %d\n", k, a[k]);
33     }
34   }
35   return 0;
36 }
37