aboutsummaryrefslogtreecommitdiff
path: root/libgomp/testsuite/libgomp.c++/target-23.C
blob: 63d343624b0cfffd742942536511a7caa3e06d89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
extern "C" void abort ();

struct S
{
  int *data;
};

int
main (void)
{
  #define SZ 10
  S *s = new S ();
  s->data = new int[SZ];

  for (int i = 0; i < SZ; i++)
    s->data[i] = 0;

  #pragma omp target enter data map(to: s)
  #pragma omp target enter data map(to: s->data, s->data[:SZ])
  #pragma omp target
  {
    for (int i = 0; i < SZ; i++)
      s->data[i] = i;
  }
  #pragma omp target exit data map(from: s->data, s->data[:SZ])
  #pragma omp target exit data map(from: s)

  for (int i = 0; i < SZ; i++)
    if (s->data[i] != i)
      abort ();

  return 0;
}