mirror of git://gcc.gnu.org/git/gcc.git
60 lines
820 B
C
60 lines
820 B
C
/* { 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;
|
|
}
|