1 // RUN: %clang_cc1 %s -verify -fopenacc
5 // expected-error@+1{{expected OpenACC directive}}
9 // expected-error@+2{{expected OpenACC directive}}
10 // expected-error@+1{{invalid OpenACC clause 'whatever'}}
11 #pragma acc(whatever) routine
13 // expected-error@+2{{expected OpenACC directive}}
14 // expected-error@+1{{invalid OpenACC clause 'routine'}}
17 // expected-error@+1{{invalid OpenACC directive 'invalid'}}
21 // expected-error@+1{{invalid OpenACC clause 'clause'}}
22 #pragma acc parallel clause list
24 // expected-error@+2{{expected clause-list or newline in OpenACC directive}}
25 // expected-error@+1{{invalid OpenACC clause 'clause'}}
26 #pragma acc parallel() clause list
28 // expected-error@+3{{expected clause-list or newline in OpenACC directive}}
29 // expected-error@+2{{expected ')'}}
30 // expected-note@+1{{to match this '('}}
31 #pragma acc parallel( clause list
33 // expected-error@+2{{expected clause-list or newline in OpenACC directive}}
34 // expected-error@+1{{invalid OpenACC clause 'clause'}}
35 #pragma acc parallel() clause list
37 // expected-error@+3{{expected clause-list or newline in OpenACC directive}}
38 // expected-error@+2{{expected ')'}}
39 // expected-note@+1{{to match this '('}}
40 #pragma acc parallel( clause list
42 // expected-error@+2{{expected clause-list or newline in OpenACC directive}}
43 // expected-error@+1{{invalid OpenACC clause 'clause'}}
44 #pragma acc serial() clause list
46 // expected-error@+3{{expected clause-list or newline in OpenACC directive}}
47 // expected-error@+2{{expected ')'}}
48 // expected-note@+1{{to match this '('}}
49 #pragma acc serial( clause list
51 // expected-error@+1{{invalid OpenACC clause 'clause'}}
52 #pragma acc serial clause list
54 // expected-error@+1{{invalid OpenACC clause 'clause'}}
55 #pragma acc kernels clause list
57 // expected-error@+2{{OpenACC 'data' construct must have at least one 'copy', 'copyin', 'copyout', 'create', 'no_create', 'present', 'deviceptr', 'attach' or 'default' clause}}
58 // expected-error@+1{{invalid OpenACC clause 'clause'}}
59 #pragma acc data clause list
61 // expected-error@+2{{OpenACC 'enter data' construct must have at least one 'copyin', 'create' or 'attach' clause}}
62 // expected-error@+1{{invalid OpenACC clause 'clause'}}
63 #pragma acc enter data clause list
65 // expected-error@+2{{OpenACC 'exit data' construct must have at least one 'copyout', 'delete' or 'detach' clause}}
66 // expected-error@+1{{invalid OpenACC clause 'clause'}}
67 #pragma acc exit data clause list
69 // expected-error@+1{{invalid OpenACC directive 'enter invalid'}}
70 #pragma acc enter invalid
72 // expected-error@+1{{invalid OpenACC directive 'exit invalid'}}
73 #pragma acc exit invalid
75 // expected-error@+1{{invalid OpenACC directive 'enter'}}
78 // expected-error@+1{{expected identifier}}
81 // expected-error@+2{{OpenACC 'host_data' construct must have at least one 'use_device' clause}}
82 // expected-error@+1{{invalid OpenACC clause 'clause'}}
83 #pragma acc host_data clause list
85 // expected-error@+1{{invalid OpenACC clause 'clause'}}
86 #pragma acc loop clause list
87 for(int i
= 0; i
< 6;++i
){}
88 // expected-error@+1{{invalid OpenACC clause 'invalid'}}
89 #pragma acc parallel invalid clause list
90 for(int i
= 0; i
< 6;++i
){}
91 // expected-error@+1{{invalid OpenACC clause 'invalid'}}
92 #pragma acc serial invalid clause list
93 for(int i
= 0; i
< 6;++i
){}
94 // expected-error@+1{{invalid OpenACC clause 'clause'}}
95 #pragma acc parallel loop clause list
96 for(int i
= 0; i
< 6;++i
){}
98 #pragma acc parallel loop
99 for(int i
= 0; i
< 6;++i
){}
100 // expected-error@+1{{invalid OpenACC clause 'clause'}}
101 #pragma acc serial loop clause list
102 for(int i
= 0; i
< 6;++i
){}
103 #pragma acc serial loop
104 for(int i
= 0; i
< 6;++i
){}
105 // expected-error@+1{{invalid OpenACC clause 'clause'}}
106 #pragma acc kernels loop clause list
107 for(int i
= 0; i
< 6;++i
){}
108 #pragma acc kernels loop
109 for(int i
= 0; i
< 6;++i
){}
111 int i
= 0, j
= 0, k
= 0;
114 // expected-error@+1{{invalid OpenACC clause 'garbage'}}
115 #pragma acc atomic garbage
117 // expected-error@+1{{invalid OpenACC clause 'garbage'}}
118 #pragma acc atomic garbage clause list
120 #pragma acc atomic read
122 // expected-error@+1{{invalid OpenACC clause 'clause'}}
123 #pragma acc atomic write clause list
125 // expected-error@+1{{invalid OpenACC clause 'clause'}}
126 #pragma acc atomic update clause list
128 // expected-error@+1{{invalid OpenACC clause 'clause'}}
129 #pragma acc atomic capture clause list
133 // expected-error@+2{{invalid OpenACC clause 'clause'}}
134 // expected-warning@+1{{OpenACC construct 'declare' not yet implemented, pragma ignored}}
135 #pragma acc declare clause list
137 // expected-error@+1{{invalid OpenACC clause 'clause'}}
138 #pragma acc init clause list
140 // expected-error@+1{{invalid OpenACC clause 'clause'}}
141 #pragma acc shutdown clause list
143 // expected-error@+2{{invalid OpenACC clause 'clause'}}
144 // expected-error@+1{{OpenACC 'set' construct must have at least one 'default_async', 'device_num', 'device_type' or 'if' clause}}
145 #pragma acc set clause list
147 // expected-error@+2{{OpenACC 'update' construct must have at least one 'self', 'host' or 'device' clause}}
148 // expected-error@+1{{invalid OpenACC clause 'clause'}}
149 #pragma acc update clause list
153 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
156 // expected-error@+2{{invalid OpenACC clause 'clause'}}
157 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
158 #pragma acc routine clause list
161 // expected-error@+2{{use of undeclared identifier 'func_name'}}
162 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
163 #pragma acc routine (func_name)
164 // expected-error@+3{{use of undeclared identifier 'func_name'}}
165 // expected-error@+2{{invalid OpenACC clause 'clause'}}
166 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
167 #pragma acc routine (func_name) clause list
169 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
170 #pragma acc routine (routine_func)
171 // expected-error@+2{{invalid OpenACC clause 'clause'}}
172 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
173 #pragma acc routine (routine_func) clause list
175 // expected-error@+3{{expected ')'}}
176 // expected-note@+2{{to match this '('}}
177 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
178 #pragma acc routine (routine_func())
180 // expected-error@+2{{expected identifier}}
181 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
182 #pragma acc routine()
184 // expected-error@+2{{expected identifier}}
185 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
186 #pragma acc routine(int)