/* Test present data clauses in acc offloaded regions when the subarray inside the present clause does not have the same base offset value as the subarray in the enclosing acc data or acc enter data variable. */ #include void offset (int *data, int n) { int i; #pragma acc parallel loop present (data[0:n]) for (i = 0; i < n; i++) data[i] = n; } int main () { const int n = 30; int data[n], i; for (i = 0; i < n; i++) data[i] = -1; #pragma acc data copy(data[0:n]) { offset (data + 10, 10); } for (i = 0; i < n; i++) { if (i < 10 || i >= 20) assert (data[i] == -1); else assert (data[i] == 10); } return 0; }