1 #include <stdlib.h>
2
3 int main (void)
4 {
5 void *a, *a_1, *a_2;
6
7 #define A (void *) 0x123
8 a = A;
9
10 #pragma acc data copyout (a_1, a_2)
11 #pragma acc kernels deviceptr (a)
12 {
13 a_1 = a;
14 a_2 = &a;
15 }
16
17 if (a != A)
18 abort ();
19 if (a_1 != a)
20 abort ();
21 #if ACC_MEM_SHARED
22 if (a_2 != &a)
23 abort ();
24 #else
25 if (a_2 == &a)
26 abort ();
27 #endif
28
29 a_1 = a_2 = 0;
30
31 #pragma acc data deviceptr (a)
32 #pragma acc parallel copyout (a_1, a_2)
33 {
34 a_1 = a;
35 a_2 = &a;
36 }
37
38 if (a != A)
39 abort ();
40 if (a_1 != a)
41 abort ();
42 #if ACC_MEM_SHARED
43 if (a_2 != &a)
44 abort ();
45 #else
46 if (a_2 == &a)
47 abort ();
48 #endif
49
50 return 0;
51 }