1 extern void abort (void);
2 
3 void
foo(int n)4 foo (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()43 main ()
44 {
45   foo (9);
46   return 0;
47 }
48