/* { dg-do run } */ #include #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; }