libgomp/
* testsuite/libgomp.oacc-c-c++-common/host_data-6.c: New file.
From-SVN: r279119
2019-12-09 Thomas Schwinge <thomas@codesourcery.com>
+ * testsuite/libgomp.oacc-c-c++-common/host_data-6.c: New file.
+
* target.c (gomp_exit_data): Use 'gomp_remove_var'.
2019-12-09 Tobias Burnus <tobias@codesourcery.com>
--- /dev/null
+/* 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;
+}