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  }