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
12int a[Nz];
13
14int 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(format: "a[%d] = %d\n", k, a[k]);
33 }
34 }
35 return 0;
36}
37

source code of openmp/runtime/test/target/issue-81488.c