mirror of git://gcc.gnu.org/git/gcc.git
33 lines
527 B
C
33 lines
527 B
C
#include <cstring>
|
|
#include <cassert>
|
|
|
|
struct s {
|
|
int (&a)[10];
|
|
s(int (&a0)[10]) : a(a0) {}
|
|
};
|
|
|
|
int
|
|
main (int argc, char *argv[])
|
|
{
|
|
int la[10];
|
|
s v(la);
|
|
|
|
memset (la, 0, sizeof la);
|
|
|
|
#pragma omp target enter data map(to: v)
|
|
|
|
/* This mapping must use GOMP_MAP_ATTACH_DETACH not GOMP_MAP_ALWAYS_POINTER,
|
|
else the host reference v.a will be corrupted on copy-out. */
|
|
|
|
#pragma omp target map(v.a[0:10])
|
|
{
|
|
v.a[5]++;
|
|
}
|
|
|
|
#pragma omp target exit data map(from: v)
|
|
|
|
assert (v.a[5] == 1);
|
|
|
|
return 0;
|
|
}
|