1 ! RUN: %python %S/../test_errors.py %s %flang -fopenmp
7 real(8) :: a(256), b(256)
10 !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region.
15 !$omp end distribute simd
17 !$omp target parallel device(0)
21 !$omp end target parallel
23 !ERROR: At most one DEVICE clause can appear on the TARGET PARALLEL directive
24 !$omp target parallel device(0) device(1)
28 !$omp end target parallel
30 !$omp target parallel defaultmap(tofrom:scalar)
34 !$omp end target parallel
36 !ERROR: 'variable-category' modifier is required
37 !$omp target parallel defaultmap(tofrom)
41 !$omp end target parallel
43 !ERROR: At most one DEFAULTMAP clause can appear on the TARGET PARALLEL directive
44 !$omp target parallel defaultmap(tofrom:scalar) defaultmap(tofrom:scalar)
48 !$omp end target parallel
50 !$omp target parallel map(tofrom:a)
54 !$omp end target parallel
56 !ERROR: COPYIN clause is not allowed on the TARGET PARALLEL directive
57 !ERROR: Non-THREADPRIVATE object 'a' in COPYIN clause
58 !$omp target parallel copyin(a)
62 !$omp end target parallel
64 !$omp target parallel do device(0)
68 !$omp end target parallel do
70 !ERROR: At most one DEVICE clause can appear on the TARGET PARALLEL DO directive
71 !$omp target parallel do device(0) device(1)
75 !$omp end target parallel do
77 !$omp target parallel do defaultmap(tofrom:scalar)
81 !$omp end target parallel do
83 !ERROR: 'variable-category' modifier is required
84 !$omp target parallel do defaultmap(tofrom)
88 !$omp end target parallel do
90 !ERROR: At most one DEFAULTMAP clause can appear on the TARGET PARALLEL DO directive
91 !$omp target parallel do defaultmap(tofrom:scalar) defaultmap(tofrom:scalar)
95 !$omp end target parallel do
97 !$omp target parallel do map(tofrom:a)
101 !$omp end target parallel do
103 !ERROR: COPYIN clause is not allowed on the TARGET PARALLEL DO directive
104 !ERROR: Non-THREADPRIVATE object 'a' in COPYIN clause
105 !$omp target parallel do copyin(a)
109 !$omp end target parallel do
111 !$omp target teams map(a)
115 !$omp end target teams
117 !$omp target teams device(0)
121 !$omp end target teams
123 !ERROR: At most one DEVICE clause can appear on the TARGET TEAMS directive
124 !$omp target teams device(0) device(1)
128 !$omp end target teams
130 !ERROR: SCHEDULE clause is not allowed on the TARGET TEAMS directive
131 !$omp target teams schedule(static)
135 !$omp end target teams
137 !$omp target teams defaultmap(tofrom:scalar)
141 !$omp end target teams
143 !ERROR: 'variable-category' modifier is required
144 !$omp target teams defaultmap(tofrom)
148 !$omp end target teams
150 !ERROR: At most one DEFAULTMAP clause can appear on the TARGET TEAMS directive
151 !$omp target teams defaultmap(tofrom:scalar) defaultmap(tofrom:scalar)
155 !$omp end target teams
157 !$omp target teams num_teams(3) thread_limit(10) default(shared) private(i) shared(a)
161 !$omp end target teams
163 !ERROR: At most one NUM_TEAMS clause can appear on the TARGET TEAMS directive
164 !$omp target teams num_teams(2) num_teams(3)
168 !$omp end target teams
170 !ERROR: The parameter of the NUM_TEAMS clause must be a positive integer expression
171 !$omp target teams num_teams(-1)
175 !$omp end target teams
177 !ERROR: At most one THREAD_LIMIT clause can appear on the TARGET TEAMS directive
178 !$omp target teams thread_limit(2) thread_limit(3)
182 !$omp end target teams
184 !ERROR: The parameter of the THREAD_LIMIT clause must be a positive integer expression
185 !$omp target teams thread_limit(-1)
189 !$omp end target teams
191 !ERROR: At most one DEFAULT clause can appear on the TARGET TEAMS directive
192 !$omp target teams default(shared) default(private)
196 !$omp end target teams
198 !$omp target teams num_teams(2) defaultmap(tofrom:scalar)
202 !$omp end target teams
204 !$omp target teams map(tofrom:a)
208 !$omp end target teams
210 !ERROR: Only the TO, FROM, TOFROM, ALLOC map types are permitted for MAP clauses on the TARGET TEAMS directive
211 !$omp target teams map(delete:a)
215 !$omp end target teams
218 !$omp target teams distribute map(a)
222 !$omp end target teams distribute
224 !$omp target teams distribute device(0)
228 !$omp end target teams distribute
230 !ERROR: At most one DEVICE clause can appear on the TARGET TEAMS DISTRIBUTE directive
231 !$omp target teams distribute device(0) device(1)
235 !$omp end target teams distribute
237 !$omp target teams distribute defaultmap(tofrom:scalar)
241 !$omp end target teams distribute
243 !ERROR: 'variable-category' modifier is required
244 !$omp target teams distribute defaultmap(tofrom)
248 !$omp end target teams distribute
250 !ERROR: At most one DEFAULTMAP clause can appear on the TARGET TEAMS DISTRIBUTE directive
251 !$omp target teams distribute defaultmap(tofrom:scalar) defaultmap(tofrom:scalar)
255 !$omp end target teams distribute
257 !$omp target teams distribute num_teams(3) thread_limit(10) default(shared) private(i) shared(a)
261 !$omp end target teams distribute
263 !ERROR: At most one NUM_TEAMS clause can appear on the TARGET TEAMS DISTRIBUTE directive
264 !$omp target teams distribute num_teams(2) num_teams(3)
268 !$omp end target teams distribute
270 !ERROR: The parameter of the NUM_TEAMS clause must be a positive integer expression
271 !$omp target teams distribute num_teams(-1)
275 !$omp end target teams distribute
277 !ERROR: At most one THREAD_LIMIT clause can appear on the TARGET TEAMS DISTRIBUTE directive
278 !$omp target teams distribute thread_limit(2) thread_limit(3)
282 !$omp end target teams distribute
284 !ERROR: The parameter of the THREAD_LIMIT clause must be a positive integer expression
285 !$omp target teams distribute thread_limit(-1)
289 !$omp end target teams distribute
291 !ERROR: At most one DEFAULT clause can appear on the TARGET TEAMS DISTRIBUTE directive
292 !$omp target teams distribute default(shared) default(private)
296 !$omp end target teams distribute
298 !$omp target teams distribute num_teams(2) defaultmap(tofrom:scalar)
302 !$omp end target teams distribute
304 !$omp target teams distribute map(tofrom:a)
308 !$omp end target teams distribute
310 !ERROR: Only the TO, FROM, TOFROM, ALLOC map types are permitted for MAP clauses on the TARGET TEAMS DISTRIBUTE directive
311 !$omp target teams distribute map(delete:a)
315 !$omp end target teams distribute
317 !$omp target teams distribute parallel do device(0)
321 !$omp end target teams distribute parallel do
323 !ERROR: At most one DEVICE clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO directive
324 !$omp target teams distribute parallel do device(0) device(1)
328 !$omp end target teams distribute parallel do
330 !$omp target teams distribute parallel do defaultmap(tofrom:scalar)
334 !$omp end target teams distribute parallel do
336 !ERROR: 'variable-category' modifier is required
337 !$omp target teams distribute parallel do defaultmap(tofrom)
341 !$omp end target teams distribute parallel do
343 !ERROR: At most one DEFAULTMAP clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO directive
344 !$omp target teams distribute parallel do defaultmap(tofrom:scalar) defaultmap(tofrom:scalar)
348 !$omp end target teams distribute parallel do
350 !$omp target teams distribute parallel do num_teams(3) thread_limit(10) default(shared) private(i) shared(a)
354 !$omp end target teams distribute parallel do
356 !ERROR: At most one NUM_TEAMS clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO directive
357 !$omp target teams distribute parallel do num_teams(2) num_teams(3)
361 !$omp end target teams distribute parallel do
363 !ERROR: The parameter of the NUM_TEAMS clause must be a positive integer expression
364 !$omp target teams distribute parallel do num_teams(-1)
368 !$omp end target teams distribute parallel do
370 !ERROR: At most one THREAD_LIMIT clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO directive
371 !$omp target teams distribute parallel do thread_limit(2) thread_limit(3)
375 !$omp end target teams distribute parallel do
377 !ERROR: The parameter of the THREAD_LIMIT clause must be a positive integer expression
378 !$omp target teams distribute parallel do thread_limit(-1)
382 !$omp end target teams distribute parallel do
384 !ERROR: At most one DEFAULT clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO directive
385 !$omp target teams distribute parallel do default(shared) default(private)
389 !$omp end target teams distribute parallel do
391 !$omp target teams distribute parallel do num_teams(2) defaultmap(tofrom:scalar)
395 !$omp end target teams distribute parallel do
397 !$omp target teams distribute parallel do map(tofrom:a)
401 !$omp end target teams distribute parallel do
403 !ERROR: Only the TO, FROM, TOFROM, ALLOC map types are permitted for MAP clauses on the TARGET TEAMS DISTRIBUTE PARALLEL DO directive
404 !$omp target teams distribute parallel do map(delete:a)
408 !$omp end target teams distribute parallel do
411 !$omp target teams distribute parallel do simd map(a)
415 !$omp end target teams distribute parallel do simd
417 !$omp target teams distribute parallel do simd device(0)
421 !$omp end target teams distribute parallel do simd
423 !ERROR: At most one DEVICE clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD directive
424 !$omp target teams distribute parallel do simd device(0) device(1)
428 !$omp end target teams distribute parallel do simd
430 !$omp target teams distribute parallel do simd defaultmap(tofrom:scalar)
434 !$omp end target teams distribute parallel do simd
436 !ERROR: 'variable-category' modifier is required
437 !$omp target teams distribute parallel do simd defaultmap(tofrom)
441 !$omp end target teams distribute parallel do simd
443 !ERROR: At most one DEFAULTMAP clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD directive
444 !$omp target teams distribute parallel do simd defaultmap(tofrom:scalar) defaultmap(tofrom:scalar)
448 !$omp end target teams distribute parallel do simd
450 !$omp target teams distribute parallel do simd num_teams(3) thread_limit(10) default(shared) private(i) shared(a)
454 !$omp end target teams distribute parallel do simd
456 !ERROR: At most one NUM_TEAMS clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD directive
457 !$omp target teams distribute parallel do simd num_teams(2) num_teams(3)
461 !$omp end target teams distribute parallel do simd
463 !ERROR: The parameter of the NUM_TEAMS clause must be a positive integer expression
464 !$omp target teams distribute parallel do simd num_teams(-1)
468 !$omp end target teams distribute parallel do simd
470 !ERROR: At most one THREAD_LIMIT clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD directive
471 !$omp target teams distribute parallel do simd thread_limit(2) thread_limit(3)
475 !$omp end target teams distribute parallel do simd
477 !ERROR: The parameter of the THREAD_LIMIT clause must be a positive integer expression
478 !$omp target teams distribute parallel do simd thread_limit(-1)
482 !$omp end target teams distribute parallel do simd
484 !ERROR: At most one DEFAULT clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD directive
485 !$omp target teams distribute parallel do simd default(shared) default(private)
489 !$omp end target teams distribute parallel do simd
491 !$omp target teams distribute parallel do simd num_teams(2) defaultmap(tofrom:scalar)
495 !$omp end target teams distribute parallel do simd
497 !$omp target teams distribute parallel do simd map(tofrom:a)
501 !$omp end target teams distribute parallel do simd
503 !ERROR: Only the TO, FROM, TOFROM, ALLOC map types are permitted for MAP clauses on the TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD directive
504 !$omp target teams distribute parallel do simd map(delete:a)
508 !$omp end target teams distribute parallel do simd