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>
This commit is contained in:
Julian Brown 2020-06-04 06:40:53 -07:00 committed by Thomas Schwinge
parent 5905cbdbcf
commit 9643f5bbe2
2 changed files with 82 additions and 0 deletions

View file

@ -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;
}

View file

@ -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;
}