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