public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/guojiufu/heads/personal-branch)] Add 'libgomp.oacc-c-c++-common/struct-copyout-{1, 2}.c'
@ 2020-06-10 3:41 Jiu Fu Guo
0 siblings, 0 replies; only message in thread
From: Jiu Fu Guo @ 2020-06-10 3:41 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:9643f5bbe237764cbefc975e934d1281f47ee3c2
commit 9643f5bbe237764cbefc975e934d1281f47ee3c2
Author: Julian Brown <julian@codesourcery.com>
Date: Thu Jun 4 06:40:53 2020 -0700
Add 'libgomp.oacc-c-c++-common/struct-copyout-{1,2}.c'
libgomp/
* testsuite/libgomp.oacc-c-c++-common/struct-copyout-1.c: New test.
* testsuite/libgomp.oacc-c-c++-common/struct-copyout-2.c: New test.
Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
Diff:
---
.../libgomp.oacc-c-c++-common/struct-copyout-1.c | 38 +++++++++++++++++++
.../libgomp.oacc-c-c++-common/struct-copyout-2.c | 44 ++++++++++++++++++++++
2 files changed, 82 insertions(+)
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/struct-copyout-1.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/struct-copyout-1.c
new file mode 100644
index 00000000000..b86f1c921a9
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/struct-copyout-1.c
@@ -0,0 +1,38 @@
+#include <assert.h>
+
+struct str1 {
+ int a;
+ int b;
+};
+
+struct str2 {
+ int c;
+ int d;
+ struct str1 s;
+};
+
+int
+main (int argc, char *argv[])
+{
+ struct str2 t;
+
+ t.c = 1;
+ t.d = 2;
+ t.s.a = 3;
+ t.s.b = 4;
+
+ #pragma acc enter data copyin(t.s)
+
+ #pragma acc serial present(t.s) /* { dg-warning "using vector_length \\(32\\), ignoring 1" "" { target openacc_nvidia_accel_selected } } */
+ {
+ t.s.a = 5;
+ t.s.b = 6;
+ }
+
+ #pragma acc exit data copyout(t.s)
+
+ assert (t.s.a == 5);
+ assert (t.s.b == 6);
+
+ return 0;
+}
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/struct-copyout-2.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/struct-copyout-2.c
new file mode 100644
index 00000000000..4dd8a3a7e17
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/struct-copyout-2.c
@@ -0,0 +1,44 @@
+#include <assert.h>
+#include <stdlib.h>
+
+struct str1 {
+ int a;
+ int b;
+ int *c;
+};
+
+#define N 1024
+
+int
+main (int argc, char *argv[])
+{
+ struct str1 s;
+
+ s.a = 1;
+ s.b = 2;
+ s.c = (int *) malloc (sizeof (int) * N);
+
+ for (int i = 0; i < N; i++)
+ s.c[i] = i + 10;
+
+ #pragma acc enter data copyin(s.a, s.b, s.c[0:N])
+
+ #pragma acc serial present(s.a, s.b, s.c[0:N]) /* { dg-warning "using vector_length \\(32\\), ignoring 1" "" { target openacc_nvidia_accel_selected } } */
+ {
+ s.a = 3;
+ s.b = 4;
+ for (int i = 0; i < N; i++)
+ s.c[i] = i + 20;
+ }
+
+ #pragma acc exit data copyout(s.a, s.b, s.c[0:N])
+
+ assert (s.a == 3);
+ assert (s.b == 4);
+ for (int i = 0; i < N; i++)
+ assert (s.c[i] == i + 20);
+
+ free (s.c);
+
+ return 0;
+}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-06-10 3:41 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-10 3:41 [gcc(refs/users/guojiufu/heads/personal-branch)] Add 'libgomp.oacc-c-c++-common/struct-copyout-{1, 2}.c' Jiu Fu Guo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).