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