Break circular dependency between FIR dialect and utilities
[llvm-project.git] / flang / test / Semantics / OpenMP / resolve06.f90
blob1afc7408c0bc21948c16492e776e7e83b7341ca5
1 ! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp
2 use omp_lib
3 !2.11.4 Allocate Clause
4 !For any list item that is specified in the allocate
5 !clause on a directive, a data-sharing attribute clause
6 !that may create a private copy of that list item must be
7 !specified on the same directive.
9 integer :: N = 2
11 !ERROR: The ALLOCATE clause requires that 'x' must be listed in a private data-sharing attribute clause on the same directive
12 !$omp parallel allocate(omp_default_mem_space : x)
13 do i = 1, N
14 x = 2
15 enddo
16 !$omp end parallel
18 !ERROR: The ALLOCATE clause requires that 'y' must be listed in a private data-sharing attribute clause on the same directive
19 !$omp parallel allocate(omp_default_mem_space : y) firstprivate(x)
20 do i = 1, N
21 x = 2
22 enddo
23 !$omp end parallel
25 !ERROR: The ALLOCATE clause requires that 'x' must be listed in a private data-sharing attribute clause on the same directive
26 !ERROR: The ALLOCATE clause requires that 'x' must be listed in a private data-sharing attribute clause on the same directive
27 !$omp parallel allocate(omp_default_mem_space : x) allocate(omp_default_mem_space : x)
28 do i = 1, N
29 x = 2
30 enddo
31 !$omp end parallel
33 !ERROR: The ALLOCATE clause requires that 'f' must be listed in a private data-sharing attribute clause on the same directive
34 !$omp parallel allocate(omp_default_mem_space : f) shared(f)
35 do i = 1, N
36 x = 2
37 enddo
38 !$omp end parallel
40 !ERROR: The ALLOCATE clause requires that 'q' must be listed in a private data-sharing attribute clause on the same directive
41 !$omp parallel private(t) allocate(omp_default_mem_space : z, t, q, r) firstprivate(z, r)
42 do i = 1, N
43 x = 2
44 enddo
45 !$omp end parallel
47 !ERROR: The ALLOCATE clause requires that 'b' must be listed in a private data-sharing attribute clause on the same directive
48 !ERROR: The ALLOCATE clause requires that 'c' must be listed in a private data-sharing attribute clause on the same directive
49 !$omp parallel allocate(omp_default_mem_space : a, b, c, d) firstprivate(a, d)
50 do i = 1, N
51 x = 2
52 enddo
53 !$omp end parallel
54 end