| extern void abort (void); | |
| int g; | |
| #pragma omp declare target (g) | |
| #pragma omp declare target | |
| int | |
| foo (void) | |
| { | |
| static int s; | |
| return ++s + g; | |
| } | |
| #pragma omp end declare target | |
| int | |
| bar (void) | |
| { | |
| static int s; | |
| #pragma omp declare target to (s) | |
| return ++s; | |
| } | |
| #pragma omp declare target (bar) | |
| int | |
| main () | |
| { | |
| int r; | |
| #pragma omp target map(from:r) | |
| { | |
| r = (foo () == 1) + (bar () == 1); | |
| r += (foo () == 2) + (bar () == 2); | |
| } | |
| if (r != 4) | |
| abort (); | |
| return 0; | |
| } |