18 struct tt
*t
= (struct tt
*) malloc (sizeof *t
);
19 struct ut
*u
= (struct ut
*) malloc (sizeof *u
);
21 for (int i
= 0; i
< 10; i
++)
22 t
->a
[i
].p
= (int *) calloc (5, sizeof (int));
26 for (int i
= 0; i
< 10; i
++)
27 for (int j
= 0; j
< 10; j
++)
28 for (int k
= 0; k
< 10; k
++)
30 if (i
== j
|| j
== k
|| i
== k
)
33 /* This one can use "firstprivate" for T... */
34 #pragma omp target map(t->a[i].p, t->a[j].p, t->a[k].p, \
35 t->a[i].p[0:2], t->a[j].p[1:3], t->a[k].p[2])
42 /* ...but this one must use attach/detach for T. */
43 #pragma omp target map(u->t, u->t->a[i].p, u->t->a[j].p, u->t->a[k].p, \
44 u->t->a[i].p[0:2], u->t->a[j].p[1:3], u->t->a[k].p[2])
52 for (int i
= 0; i
< 10; i
++)
54 assert (t
->a
[i
].p
[0] == 144);
55 assert (t
->a
[i
].p
[1] == 144);
56 assert (t
->a
[i
].p
[2] == 144);
66 /* { dg-output "(\n|\r|\r\n)" { target offload_device_nonshared_as } } */
67 /* { dg-output "libgomp: Mapped array elements must be the same .*(\n|\r|\r\n)+" { target offload_device_nonshared_as } } */
68 /* { dg-shouldfail "" { offload_device_nonshared_as } } */