/* { dg-do run } */

#include <cassert>

#define N 1024

class M {
  int array[N];

public:
  M ()
  {
    for (int i = 0; i < N; i++)
      array[i] = 0;
  }

  void incr_with_this (int c)
  {
#pragma omp target map(this->array[ :N])
    for (int i = 0; i < N; i++)
      array[i] += c;
  }

  void incr_without_this (int c)
  {
#pragma omp target map(array[ :N])
    for (int i = 0; i < N; i++)
      array[i] += c;
  }

  void incr_implicit (int c)
  {
#pragma omp target
    for (int i = 0; i < N; i++)
      array[i] += c;
  }

  void check (int c)
  {
    for (int i = 0; i < N; i++)
      assert (array[i] == c);
  }
};

int
main (int argc, char *argv[])
{
  M m;

  m.check (0);
  m.incr_with_this (3);
  m.check (3);
  m.incr_without_this (5);
  m.check (8);
  m.incr_implicit (2);
  m.check (10);

  return 0;
}
