1 /* Test 'no_create' clause on compute construct, with data not present on the
2 device. */
3
4 #include <stdlib.h>
5 #include <stdio.h>
6
7 #define N 128
8
9 int
10 main (int argc, char *argv[])
11 {
12 int var;
13 int *arr = (int *) malloc (N * sizeof (*arr));
14 int *devptr[2];
15
16 #pragma acc parallel no_create(var, arr[0:N]) copyout(devptr)
17 {
18 devptr[0] = &var;
19 devptr[1] = &arr[2];
20 }
21 if (devptr[0] != &var)
22 __builtin_abort ();
23 if (devptr[1] != &arr[2])
24 __builtin_abort ();
25
26 #pragma acc parallel no_create(var, arr[0:N]) copyout(devptr) async
27 {
28 devptr[0] = &arr[N - 2];
29 devptr[1] = &var;
30 }
31 #pragma acc wait
32 if (devptr[0] != &arr[N - 2])
33 __builtin_abort ();
34 if (devptr[1] != &var)
35 __builtin_abort ();
36
37 free (arr);
38
39 return 0;
40 }