1 extern void abort (void); 2 3 void foo(int n)4foo (int n) 5 { 6 int a[n], i, err; 7 for (i = 0; i < n; i++) 8 a[i] = 5 * i; 9 #pragma omp target map(to:a) map(from:err) private(i) 10 { 11 err = 0; 12 for (i = 0; i < n; i++) 13 if (a[i] != 5 * i) 14 err = 1; 15 } 16 if (err) 17 abort (); 18 for (i = 0; i < n; i++) 19 a[i] += i; 20 #pragma omp target map(from:err) private(i) 21 { 22 err = 0; 23 for (i = 0; i < n; i++) 24 if (a[i] != 6 * i) 25 err = 1; 26 } 27 if (err) 28 abort (); 29 for (i = 0; i < n; i++) 30 a[i] += i; 31 #pragma omp target firstprivate (a) map(from:err) private(i) 32 { 33 err = 0; 34 for (i = 0; i < n; i++) 35 if (a[i] != 7 * i) 36 err = 1; 37 } 38 if (err) 39 abort (); 40 } 41 42 int main()43main () 44 { 45 foo (9); 46 return 0; 47 } 48