]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/c-c++-common/goacc/declare-2.c
c-pragma.c (oacc_pragmas): Add entry for declare directive.
[thirdparty/gcc.git] / gcc / testsuite / c-c++-common / goacc / declare-2.c
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 *-*-* } 6 } */
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
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 }