blob: 9aa232f3f672ab9e02f182bc235838d66f960fb1 [file] [log] [blame]
/* { dg-do run } */
#include <cassert>
void test_ref ()
{
int c_orig = 5;
int &c = c_orig;
#pragma omp target map(tofrom: c)
{
c++;
}
assert (c == 6);
}
void test_ref_to_ptr ()
{
int val = 5;
int *ptr_orig = &val;
int *&ptr_ref = ptr_orig;
#pragma omp target map(tofrom: ptr_ref[0])
{
(*ptr_ref)++;
}
assert (val == 6);
}
void test_ref_to_array ()
{
int arr[1];
int (&arr_ref)[1] = arr;
arr_ref[0] = 5;
#pragma omp target map(tofrom: arr_ref[0:1])
{
arr_ref[0]++;
}
assert (arr_ref[0] == 6);
#pragma omp target map(tofrom: arr_ref[0])
{
arr_ref[0]++;
}
assert (arr_ref[0] == 7);
}
void test_ref_to_ptr_array ()
{
int *arr[1];
int *(&arr_ref)[1] = arr;
int val = 5;
arr_ref[0] = &val;
#pragma omp target data map(alloc: arr_ref, arr_ref[0])
{
#pragma omp target map(tofrom: arr_ref[0][0:1])
{
arr_ref[0][0]++;
}
}
assert (arr_ref[0][0] == 6);
}
int main ()
{
test_ref ();
test_ref_to_ptr ();
test_ref_to_array ();
test_ref_to_ptr_array ();
return 0;
}