fe570ff8d4
Make libgomp respect the on device offset of subarrays which may arise in present data clauses. libgomp/ PR libgomp/88288 * oacc-parallel.c (GOACC_parallel_keyed): Add offset to devaddrs. * testsuite/libgomp.oacc-c-c++-common/pr88288.c: New test. Reviewed-by: Thomas Schwinge <thomas@codesourcery.com> From-SVN: r266688
42 lines
690 B
C
42 lines
690 B
C
/* 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 <assert.h>
|
|
|
|
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;
|
|
}
|