2 /* { dg-do compile } */
3 /* { dg-additional-options "-std=c11" } */
8 struct S
{ int a
; int b
[2]; _Atomic
int *c
; };
9 _Atomic
int a
= 0, b
[2];
11 _Atomic
struct S c
= (struct S
) { 3, { 4, 5 }, d
};
14 int e
[3] = { 1, 2, 3 };
21 #pragma omp target map(tofrom: a) /* { dg-error "'_Atomic' 'a' in 'map' clause" } */
23 #pragma omp target map(to: b) /* { dg-error "'_Atomic' 'b' in 'map' clause" } */
25 #pragma omp target map(from: b[1:1]) /* { dg-error "'_Atomic' 'b' in 'map' clause" } */
27 #pragma omp target map(to: c.a) /* { dg-error "'_Atomic' 'c.a' in 'map' clause" } */
28 /* { dg-warning "accessing a member 'a' of an atomic structure 'c'" "" { target *-*-* } .-1 } */
30 #pragma omp target map(to: c.b[1]) /* { dg-error "'_Atomic' 'c.b' in 'map' clause" } */
31 /* { dg-warning "accessing a member 'b' of an atomic structure 'c'" "" { target *-*-* } .-1 } */
33 #pragma omp target data map(c) /* { dg-error "'_Atomic' 'c' in 'map' clause" } */
34 /* { dg-error "must contain at least one" "" { target *-*-* } .-1 } */
36 #pragma omp target update to (c.a) /* { dg-error "'_Atomic' 'c.a' in 'to' clause" } */
37 /* { dg-error "must contain at least one" "" { target *-*-* } .-1 } */
38 /* { dg-warning "accessing a member 'a' of an atomic structure 'c'" "" { target *-*-* } .-2 } */
39 #pragma omp target update from (c.b[1]) /* { dg-error "'_Atomic' 'c.b' in 'from' clause" } */
40 /* { dg-error "must contain at least one" "" { target *-*-* } .-1 } */
41 /* { dg-warning "accessing a member 'b' of an atomic structure 'c'" "" { target *-*-* } .-2 } */
42 #pragma omp target update to (c) /* { dg-error "'_Atomic' 'c' in 'to' clause" } */
43 /* { dg-error "must contain at least one" "" { target *-*-* } .-1 } */
45 #pragma omp target map(to: c.c[0:]) /* { dg-error "'_Atomic' 'c.c' in 'map' clause" } */
46 /* { dg-warning "accessing a member 'c' of an atomic structure 'c'" "" { target *-*-* } .-1 } */
48 #pragma omp target map(to: p[1:2]) /* { dg-error "'_Atomic' 'p' in 'map' clause" } */
50 #pragma omp target map(to: q[1:2]) /* { dg-error "'_Atomic' '\[^\n\r]*' in 'map' clause" } */
57 _Atomic
int a
= 0, b
[2] = { 1, 2 };
58 #pragma omp target defaultmap(tofrom:scalar) /* { dg-error "'_Atomic' 'a' in implicit 'map' clause" } */
60 #pragma omp target /* { dg-error "'_Atomic' 'b' in implicit 'map' clause" } */
67 _Atomic
int a
= 0, b
[2] = { 1, 2 };
68 #pragma omp target /* { dg-error "'_Atomic' 'a' in implicit 'firstprivate' clause on 'target' construct" } */
70 #pragma omp target firstprivate (a) /* { dg-error "'_Atomic' 'a' in 'firstprivate' clause on 'target' construct" } */
72 #pragma omp target firstprivate (b) /* { dg-error "'_Atomic' 'b' in 'firstprivate' clause on 'target' construct" } */