/* Call 'acc_memcpy_from_device' inside '#pragma acc host_data'. */ /* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */ #include #include #include #include int main () { const int SIZE = 318; const int c0 = 22; const int c1 = 112; char *h = (char *) malloc (SIZE); memset (h, c0, SIZE); #pragma acc data create (h[0:SIZE - 44]) { #pragma acc update device (h[0:SIZE - 44]) memset (h, c1, 67); void *d = h; #pragma acc host_data use_device (d) { acc_memcpy_from_device (h, d, 12); } } for (int i = 0; i < SIZE; ++i) { if (i < 12) assert (h[i] == c0); else if (i < 67) assert (h[i] == c1); else assert (h[i] == c0); } free (h); return 0; }