111
|
1 extern void abort (void);
|
|
2
|
|
3 int g;
|
|
4 #pragma omp declare target (g)
|
|
5
|
|
6 #pragma omp declare target
|
|
7 int
|
|
8 foo (void)
|
|
9 {
|
|
10 static int s;
|
|
11 return ++s + g;
|
|
12 }
|
|
13 #pragma omp end declare target
|
|
14
|
|
15 int
|
|
16 bar (void)
|
|
17 {
|
|
18 static int s;
|
|
19 #pragma omp declare target to (s)
|
|
20 return ++s;
|
|
21 }
|
|
22 #pragma omp declare target (bar)
|
|
23
|
|
24 int
|
|
25 main ()
|
|
26 {
|
|
27 int r;
|
|
28 #pragma omp target map(from:r)
|
|
29 {
|
|
30 r = (foo () == 1) + (bar () == 1);
|
|
31 r += (foo () == 2) + (bar () == 2);
|
|
32 }
|
|
33 if (r != 4)
|
|
34 abort ();
|
|
35 return 0;
|
|
36 }
|