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] = 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
      43  main ()
      44  {
      45    foo (9);
      46    return 0;
      47  }