This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[OpenACC 5/7] host_data construct (gcc tests)
- From: James Norris <jnorris at codesourcery dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Cc: "Joseph S. Myers" <joseph at codesourcery dot com>, Nathan Sidwell <Nathan_Sidwell at mentor dot com>, Jakub Jelinek <jakub at redhat dot com>
- Date: Thu, 22 Oct 2015 14:19:02 -0500
- Subject: [OpenACC 5/7] host_data construct (gcc tests)
- Authentication-results: sourceware.org; auth=none
- References: <56293476 dot 5020801 at codesourcery dot com>
gcc/testsuite/c-c++-common/goacc/host_data-1.c
b/gcc/testsuite/c-c++-common/goacc/host_data-1.c
gcc/testsuite/c-c++-common/goacc/host_data-2.c
b/gcc/testsuite/c-c++-common/goacc/host_data-2.c
gcc/testsuite/c-c++-common/goacc/host_data-3.c
b/gcc/testsuite/c-c++-common/goacc/host_data-3.c
gcc/testsuite/c-c++-common/goacc/host_data-4.c
b/gcc/testsuite/c-c++-common/goacc/host_data-4.c
- New compile time tests for host_data.
diff --git a/gcc/testsuite/c-c++-common/goacc/host_data-1.c b/gcc/testsuite/c-c++-common/goacc/host_data-1.c
new file mode 100644
index 0000000..521c854
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/goacc/host_data-1.c
@@ -0,0 +1,13 @@
+/* Test valid use of host_data directive. */
+/* { dg-do compile } */
+
+int v0;
+int v1[3][3];
+
+void
+f (void)
+{
+ int v2 = 3;
+#pragma acc host_data use_device(v2, v0, v1)
+ ;
+}
diff --git a/gcc/testsuite/c-c++-common/goacc/host_data-2.c b/gcc/testsuite/c-c++-common/goacc/host_data-2.c
new file mode 100644
index 0000000..e5213a0
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/goacc/host_data-2.c
@@ -0,0 +1,13 @@
+/* Test invalid use of host_data directive. */
+/* { dg-do compile } */
+
+int v0;
+#pragma acc host_data use_device(v0) /* { dg-error "expected" } */
+
+void
+f (void)
+{
+ int v2 = 3;
+#pragma acc host_data copy(v2) /* { dg-error "not valid for" } */
+ ;
+}
diff --git a/gcc/testsuite/c-c++-common/goacc/host_data-3.c b/gcc/testsuite/c-c++-common/goacc/host_data-3.c
new file mode 100644
index 0000000..f9621c9
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/goacc/host_data-3.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+
+int main (int argc, char* argv[])
+{
+ int x = 5, y;
+
+ #pragma acc enter data copyin (x)
+ /* It's not clear what attempts to use non-pointer variables "directly"
+ (rather than merely taking their address) should do in host_data regions.
+ We choose to make it an error. */
+ #pragma acc host_data use_device (x) /* TODO { dg-error "" } */
+ {
+ y = x;
+ }
+ #pragma acc exit data delete (x)
+
+ return y - 5;
+}
diff --git a/gcc/testsuite/c-c++-common/goacc/host_data-4.c b/gcc/testsuite/c-c++-common/goacc/host_data-4.c
new file mode 100644
index 0000000..3dac5f3
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/goacc/host_data-4.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+
+int main (int argc, char* argv[])
+{
+ int x[100];
+
+ #pragma acc enter data copyin (x)
+ /* Specifying an array index is not valid for host_data/use_device. */
+ #pragma acc host_data use_device (x[4]) /* { dg-error "expected '\\\)' before '\\\[' token" } */
+ ;
+ #pragma acc exit data delete (x)
+
+ return 0;
+}