xref: /llvm-project/clang/test/ParserOpenACC/parse-wait-construct.c (revision e34cc7c99375c43e1698c78ec9150fa40c88d486)
1 // RUN: %clang_cc1 %s -verify -fopenacc
2 
3 void func() {
4   int i, j;
5 
6   #pragma acc wait
7 
8   // expected-error@+1{{invalid OpenACC clause 'clause'}}
9   #pragma acc wait clause-list
10 
11   // expected-error@+2{{expected ')'}}
12   // expected-note@+1{{to match this '('}}
13   #pragma acc wait (
14 
15   #pragma acc wait ()
16 
17   // expected-error@+1{{invalid OpenACC clause 'clause'}}
18   #pragma acc wait () clause-list
19 
20   // expected-error@+3{{expected expression}}
21   // expected-error@+2{{expected ')'}}
22   // expected-note@+1{{to match this '('}}
23   #pragma acc wait (devnum:
24 
25   // expected-error@+1{{expected expression}}
26   #pragma acc wait (devnum:)
27 
28   // expected-error@+2{{expected expression}}
29   // expected-error@+1{{invalid OpenACC clause 'clause'}}
30   #pragma acc wait (devnum:) clause-list
31 
32   // expected-error@+3{{expected ':'}}
33   // expected-error@+2{{expected ')'}}
34   // expected-note@+1{{to match this '('}}
35   #pragma acc wait (devnum: i + j
36 
37   // expected-error@+1{{expected ':'}}
38   #pragma acc wait (devnum: i + j)
39 
40   // expected-error@+2{{expected ':'}}
41   // expected-error@+1{{invalid OpenACC clause 'clause'}}
42   #pragma acc wait (devnum: i + j) clause-list
43 
44   // expected-error@+2{{expected ')'}}
45   // expected-note@+1{{to match this '('}}
46   #pragma acc wait (queues:
47 
48   #pragma acc wait (queues:)
49 
50   // expected-error@+1{{invalid OpenACC clause 'clause'}}
51   #pragma acc wait (queues:) clause-list
52 
53   // expected-error@+2{{expected ')'}}
54   // expected-note@+1{{to match this '('}}
55   #pragma acc wait (devnum: i + j:queues:
56 
57   #pragma acc wait (devnum: i + j:queues:)
58 
59   // expected-error@+1{{invalid OpenACC clause 'clause'}}
60   #pragma acc wait (devnum: i + j:queues:) clause-list
61 
62   // expected-error@+4{{use of undeclared identifier 'devnum'}}
63   // expected-error@+3{{expected ','}}
64   // expected-error@+2{{expected ')'}}
65   // expected-note@+1{{to match this '('}}
66   #pragma acc wait (queues:devnum: i + j
67 
68   // expected-error@+2{{use of undeclared identifier 'devnum'}}
69   // expected-error@+1{{expected ','}}
70   #pragma acc wait (queues:devnum: i + j)
71 
72   // expected-error@+3{{use of undeclared identifier 'devnum'}}
73   // expected-error@+2{{expected ','}}
74   // expected-error@+1{{invalid OpenACC clause 'clause'}}
75   #pragma acc wait (queues:devnum: i + j) clause-list
76 
77   // expected-error@+3{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
78   // expected-error@+2{{expected ')'}}
79   // expected-note@+1{{to match this '('}}
80   #pragma acc wait(i, j, 1+1, 3.3
81 
82   // expected-error@+1{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
83   #pragma acc wait(i, j, 1+1, 3.3)
84   // expected-error@+2{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
85   // expected-error@+1{{invalid OpenACC clause 'clause'}}
86   #pragma acc wait(i, j, 1+1, 3.3) clause-list
87 
88   // expected-error@+3{{expected expression}}
89   // expected-error@+2{{expected ')'}}
90   // expected-note@+1{{to match this '('}}
91   #pragma acc wait(,
92 
93   // expected-error@+1{{expected expression}}
94   #pragma acc wait(,)
95 
96   // expected-error@+2{{expected expression}}
97   // expected-error@+1{{invalid OpenACC clause 'clause'}}
98   #pragma acc wait(,) clause-list
99 
100   // expected-error@+3{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
101   // expected-error@+2{{expected ')'}}
102   // expected-note@+1{{to match this '('}}
103   #pragma acc wait(queues:i, j, 1+1, 3.3
104 
105   // expected-error@+4{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
106   // expected-error@+3{{expected expression}}
107   // expected-error@+2{{expected ')'}}
108   // expected-note@+1{{to match this '('}}
109   #pragma acc wait(queues:i, j, 1+1, 3.3,
110 
111   // expected-error@+1{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
112   #pragma acc wait(queues:i, j, 1+1, 3.3)
113 
114   // expected-error@+2{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
115   // expected-error@+1{{invalid OpenACC clause 'clause'}}
116   #pragma acc wait(queues:i, j, 1+1, 3.3) clause-list
117 
118   // expected-error@+3{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
119   // expected-error@+2{{expected ')'}}
120   // expected-note@+1{{to match this '('}}
121   #pragma acc wait(devnum:3:i, j, 1+1, 3.3
122   // expected-error@+1{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
123   #pragma acc wait(devnum:3:i, j, 1+1, 3.3)
124   // expected-error@+2{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
125   // expected-error@+1{{invalid OpenACC clause 'clause'}}
126   #pragma acc wait(devnum:3:i, j, 1+1, 3.3) clause-list
127 
128   // expected-error@+3{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
129   // expected-error@+2{{expected ')'}}
130   // expected-note@+1{{to match this '('}}
131   #pragma acc wait(devnum:3:queues:i, j, 1+1, 3.3
132   // expected-error@+1{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
133   #pragma acc wait(devnum:3:queues:i, j, 1+1, 3.3)
134   // expected-error@+2{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
135   // expected-error@+1{{invalid OpenACC clause 'clause'}}
136   #pragma acc wait(devnum:3:queues:i, j, 1+1, 3.3) clause-list
137 }
138