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