xref: /llvm-project/flang/test/Semantics/OpenMP/nested-teams.f90 (revision 50e73aeea2a7e2cbaeb66252aadea9a6144937df)
1! RUN: %python %S/../test_errors.py %s %flang -fopenmp
2
3! OpenMP Version 5.0
4! Check OpenMP construct validity for the following directives:
5! 2.7 Teams Construct
6
7program main
8  integer :: i, j, N = 10
9  real :: a, b, c
10
11  !$omp teams
12  a = 3.14
13  !$omp end teams
14
15  !$omp target
16  !$omp teams
17  a = 3.14
18  !$omp end teams
19  !$omp end target
20
21  !$omp target
22  !$omp parallel
23  !ERROR: TEAMS region can only be strictly nested within the implicit parallel region or TARGET region
24  !$omp teams
25  a = 3.14
26  !$omp end teams
27  !$omp end parallel
28  !$omp end target
29
30  !$omp parallel
31  !ERROR: TEAMS region can only be strictly nested within the implicit parallel region or TARGET region
32  !$omp teams
33  a = 3.14
34  !$omp end teams
35  !$omp end parallel
36
37  !$omp do
38  do i = 1, N
39  !ERROR: TEAMS region can only be strictly nested within the implicit parallel region or TARGET region
40  !$omp teams
41  a = 3.14
42  !$omp end teams
43  end do
44
45  !WARNING: OpenMP directive MASTER has been deprecated, please use MASKED instead.
46  !$omp master
47  !ERROR: TEAMS region can only be strictly nested within the implicit parallel region or TARGET region
48  !$omp teams
49  a = 3.14
50  !$omp end teams
51  !$omp end master
52
53  !$omp target parallel
54  !ERROR: TEAMS region can only be strictly nested within the implicit parallel region or TARGET region
55  !$omp teams
56  a = 3.14
57  !$omp end teams
58  !$omp end target parallel
59
60  !$omp target
61  !$omp teams
62  !ERROR: Only `DISTRIBUTE`, `PARALLEL`, or `LOOP` regions are allowed to be strictly nested inside `TEAMS` region.
63  !ERROR: TEAMS region can only be strictly nested within the implicit parallel region or TARGET region
64  !$omp teams
65  a = 3.14
66  !$omp end teams
67  !$omp end teams
68  !$omp end target
69
70  !$omp target teams
71  !ERROR: TEAMS region can only be strictly nested within the implicit parallel region or TARGET region
72  !$omp teams
73  a = 3.14
74  !$omp end teams
75  !$omp end target teams
76
77  !ERROR: TARGET construct with nested TEAMS region contains statements or directives outside of the TEAMS construct
78  !$omp target
79  do i = 1, N
80    !$omp teams
81    a = 3.14
82    !$omp end teams
83  enddo
84  !$omp end target
85
86  !ERROR: TARGET construct with nested TEAMS region contains statements or directives outside of the TEAMS construct
87  !$omp target
88  if (i .GT. 1) then
89    if (j .GT. 1) then
90      !$omp teams
91      a = 3.14
92      !$omp end teams
93    end if
94  end if
95  !$omp end target
96
97  !ERROR: TARGET construct with nested TEAMS region contains statements or directives outside of the TEAMS construct
98  !$omp target
99  b = 3.14
100  !$omp teams
101  a = 3.14
102  !$omp end teams
103  !$omp end target
104
105  !ERROR: TARGET construct with nested TEAMS region contains statements or directives outside of the TEAMS construct
106  !$omp target
107  !$omp teams
108  a = 3.14
109  !$omp end teams
110  c = 3.14
111  !$omp end target
112
113end program main
114