| /* Call 'acc_memcpy_from_device' inside '#pragma acc host_data'. */ | |
| /* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */ | |
| #include <assert.h> | |
| #include <stdlib.h> | |
| #include <string.h> | |
| #include <openacc.h> | |
| 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; | |
| } |