1 /* Test invalid uses of declare directive.  */
2 /* { dg-do compile } */
3 
4 #pragma acc declare /* { dg-error "no valid clauses" } */
5 
6 #pragma acc declare create(undeclared) /* { dg-error "undeclared" } */
7 /* { dg-error "no valid clauses" "second error" { target *-*-* } .-1 } */
8 
9 int v0[10];
10 #pragma acc declare create(v0[1:3]) /* { dg-error "array section" } */
11 
12 int v1;
13 #pragma acc declare create(v1, v1) /* { dg-error "more than once" } */
14 
15 int v2;
16 #pragma acc declare create(v2)
17 #pragma acc declare copyin(v2) /* { dg-error "more than once" } */
18 
19 int v3;
20 #pragma acc declare copy(v3) /* { dg-error "at file scope" } */
21 
22 int v4;
23 #pragma acc declare copyout(v4) /* { dg-error "at file scope" } */
24 
25 int v5;
26 #pragma acc declare present(v5) /* { dg-error "at file scope" } */
27 
28 int v6;
29 #pragma acc declare present_or_copy(v6) /* { dg-error "at file scope" } */
30 
31 int v7;
32 #pragma acc declare present_or_copyin(v7) /* { dg-error "at file scope" } */
33 
34 int v8;
35 #pragma acc declare present_or_copyout(v8) /* { dg-error "at file scope" } */
36 
37 int v9;
38 #pragma acc declare present_or_create(v9) /* { dg-error "at file scope" } */
39 
40 int va10;
41 #pragma acc declare create (va10)
42 #pragma acc declare link (va10) /* { dg-error "more than once" } */
43 
44 int va11;
45 #pragma acc declare link (va11)
46 #pragma acc declare link (va11) /* { dg-error "more than once" } */
47 
48 int va12;
49 #pragma acc declare create (va12) link (va12) /* { dg-error "more than once" } */
50 
51 void
f(void)52 f (void)
53 {
54   int va0;
55 #pragma acc declare link(va0) /* { dg-error "global variable" } */
56 
57   extern int ve0;
58 #pragma acc declare copy(ve0) /* { dg-error "invalid use of" } */
59 
60   extern int ve1;
61 #pragma acc declare copyout(ve1) /* { dg-error "invalid use of" } */
62 
63   extern int ve2;
64 #pragma acc declare present(ve2) /* { dg-error "invalid use of" } */
65 
66   extern int ve3;
67 #pragma acc declare present_or_copy(ve3) /* { dg-error "invalid use of" } */
68 
69   extern int ve4;
70 #pragma acc declare present_or_copyin(ve4) /* { dg-error "invalid use of" } */
71 
72   extern int ve5;
73 #pragma acc declare present_or_copyout(ve5) /* { dg-error "invalid use of" } */
74 
75   extern int ve6;
76 #pragma acc declare present_or_create(ve6) /* { dg-error "invalid use of" } */
77 
78 #pragma acc declare present (v9) /* { dg-error "invalid use of" } */
79 }
80