blob: 16bdfff3ae08a39b1302a53b325fa7d2586731e4 [file] [log] [blame]
// { dg-do run }
#include <cstring>
#include <cassert>
struct sa
{
int *ptr;
int *ptr2;
};
struct sb
{
int arr[10];
};
struct scp
{
sa *&a;
sb *&b;
scp (sa *&my_a, sb *&my_b) : a(my_a), b(my_b) {}
};
int
main ()
{
sa *my_a = new sa;
sb *my_b = new sb;
my_a->ptr = new int[10];
my_a->ptr2 = new int[10];
scp *my_c = new scp(my_a, my_b);
memset (my_c->a->ptr, 0, sizeof (int) * 10);
memset (my_c->a->ptr2, 0, sizeof (int) * 10);
#pragma omp target map (my_c->a, \
my_c->a->ptr, my_c->a->ptr[:10], \
my_c->a->ptr2, my_c->a->ptr2[:10])
{
for (int i = 0; i < 10; i++)
{
my_c->a->ptr[i] = i;
my_c->a->ptr2[i] = i * 2;
}
}
for (int i = 0; i < 10; i++)
{
assert (my_c->a->ptr[i] == i);
assert (my_c->a->ptr2[i] == i * 2);
}
delete[] my_a->ptr;
delete[] my_a->ptr2;
delete my_a;
delete my_b;
delete my_c;
return 0;
}