[TableGen] Remove recursive walk of linked list from ContractNodes. NFC
[llvm-project.git] / clang / test / ParserOpenACC / parse-constructs.c
blobf0698495a3cc2fc262ebf8afc0e9e8f631307bcf
1 // RUN: %clang_cc1 %s -verify -fopenacc
3 void func() {
5 // expected-error@+1{{expected OpenACC directive}}
6 #pragma acc
7 for(;;){}
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'}}
15 #pragma acc) routine
17 // expected-error@+1{{invalid OpenACC directive 'invalid'}}
18 #pragma acc invalid
19 for(;;){}
21 // expected-error@+1{{invalid OpenACC clause 'clause'}}
22 #pragma acc parallel clause list
23 for(;;){}
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
27 for(;;){}
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
32 for(;;){}
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
36 for(;;){}
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
41 for(;;){}
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
45 for(;;){}
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
50 for(;;){}
51 // expected-error@+1{{invalid OpenACC clause 'clause'}}
52 #pragma acc serial clause list
53 for(;;){}
54 // expected-error@+1{{invalid OpenACC clause 'clause'}}
55 #pragma acc kernels clause list
56 for(;;){}
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
60 for(;;){}
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
64 for(;;){}
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
68 for(;;){}
69 // expected-error@+1{{invalid OpenACC directive 'enter invalid'}}
70 #pragma acc enter invalid
71 for(;;){}
72 // expected-error@+1{{invalid OpenACC directive 'exit invalid'}}
73 #pragma acc exit invalid
74 for(;;){}
75 // expected-error@+1{{invalid OpenACC directive 'enter'}}
76 #pragma acc enter
77 for(;;){}
78 // expected-error@+1{{expected identifier}}
79 #pragma acc exit }
80 for(;;){}
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
84 for(;;){}
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;
112 #pragma acc atomic
113 i = i + 1;
114 // expected-error@+1{{invalid OpenACC clause 'garbage'}}
115 #pragma acc atomic garbage
116 i = i + 1;
117 // expected-error@+1{{invalid OpenACC clause 'garbage'}}
118 #pragma acc atomic garbage clause list
119 i = i + 1;
120 #pragma acc atomic read
121 i = j;
122 // expected-error@+1{{invalid OpenACC clause 'clause'}}
123 #pragma acc atomic write clause list
124 i = i + j;
125 // expected-error@+1{{invalid OpenACC clause 'clause'}}
126 #pragma acc atomic update clause list
127 i++;
128 // expected-error@+1{{invalid OpenACC clause 'clause'}}
129 #pragma acc atomic capture clause list
130 i = j++;
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
136 for(;;){}
137 // expected-error@+1{{invalid OpenACC clause 'clause'}}
138 #pragma acc init clause list
139 for(;;){}
140 // expected-error@+1{{invalid OpenACC clause 'clause'}}
141 #pragma acc shutdown clause list
142 for(;;){}
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
146 for(;;){}
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
150 for(;;){}
153 // expected-warning@+1{{OpenACC construct 'routine' not yet implemented, pragma ignored}}
154 #pragma acc routine
155 void routine_func();
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
159 void routine_func();
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)