[LoopReroll] Add an extra defensive check to avoid SCEV assertion.
[llvm-project.git] / flang / test / Semantics / omp-nested-barrier.f90
blob63428b12f1c9fe76e7c4470e0eaabf8103945d55
1 ! RUN: %S/test_errors.sh %s %t %flang_fc1 -fopenmp
2 ! REQUIRES: shell
3 ! OpenMP Version 4.5
4 ! Various checks with the nesting of BARRIER construct
6 program omp_nest_barrier
7 integer i, k, j
8 k = 0;
10 !$omp do
11 do i = 1, 10
12 k = k + 1
13 !ERROR: `BARRIER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`,`CRITICAL`, `ORDERED`, `ATOMIC` or `MASTER` region.
14 !$omp barrier
15 j = j -1
16 end do
18 !$omp do simd
19 do i = 1, 10
20 k = k + 1
21 !ERROR: The only OpenMP constructs that can be encountered during execution of a 'SIMD' region are the `ATOMIC` construct, the `LOOP` construct, the `SIMD` construct and the `ORDERED` construct with the `SIMD` clause.
22 !ERROR: `BARRIER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`,`CRITICAL`, `ORDERED`, `ATOMIC` or `MASTER` region.
23 !$omp barrier
24 j = j -1
25 end do
27 !$omp parallel do
28 do i = 1, 10
29 k = k + 1
30 !ERROR: `BARRIER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`,`CRITICAL`, `ORDERED`, `ATOMIC` or `MASTER` region.
31 !$omp barrier
32 j = j -1
33 end do
35 !$omp parallel do simd
36 do i = 1, 10
37 k = k + 1
38 !ERROR: The only OpenMP constructs that can be encountered during execution of a 'SIMD' region are the `ATOMIC` construct, the `LOOP` construct, the `SIMD` construct and the `ORDERED` construct with the `SIMD` clause.
39 !ERROR: `BARRIER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`,`CRITICAL`, `ORDERED`, `ATOMIC` or `MASTER` region.
40 !$omp barrier
41 j = j -1
42 end do
44 !$omp parallel
45 do i = 1, 10
46 k = k + 1
47 !$omp barrier
48 j = j -1
49 end do
50 !$omp end parallel
52 !$omp task
53 do i = 1, 10
54 k = k + 1
55 !ERROR: `BARRIER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`,`CRITICAL`, `ORDERED`, `ATOMIC` or `MASTER` region.
56 !$omp barrier
57 j = j -1
58 end do
59 !$omp end task
61 !$omp taskloop
62 do i = 1, 10
63 k = k + 1
64 !ERROR: `BARRIER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`,`CRITICAL`, `ORDERED`, `ATOMIC` or `MASTER` region.
65 !$omp barrier
66 j = j -1
67 end do
68 !$omp end taskloop
70 !$omp critical
71 do i = 1, 10
72 k = k + 1
73 !ERROR: `BARRIER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`,`CRITICAL`, `ORDERED`, `ATOMIC` or `MASTER` region.
74 !$omp barrier
75 j = j -1
76 end do
77 !$omp end critical
79 !$omp master
80 do i = 1, 10
81 k = k + 1
82 !ERROR: `BARRIER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`,`CRITICAL`, `ORDERED`, `ATOMIC` or `MASTER` region.
83 !$omp barrier
84 j = j -1
85 end do
86 !$omp end master
88 !$omp ordered
89 do i = 1, 10
90 k = k + 1
91 !ERROR: `BARRIER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`,`CRITICAL`, `ORDERED`, `ATOMIC` or `MASTER` region.
92 !$omp barrier
93 j = j -1
94 end do
95 !$omp end ordered
97 !$omp ordered
98 do i = 1, 10
99 !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region.
100 !$omp distribute
101 do k =1, 10
102 print *, "hello"
103 !ERROR: `BARRIER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`,`CRITICAL`, `ORDERED`, `ATOMIC` or `MASTER` region.
104 !$omp barrier
105 j = j -1
106 end do
107 !$omp end distribute
108 end do
109 !$omp end ordered
111 !$omp master
112 do i = 1, 10
113 !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region.
114 !$omp distribute
115 do k =1, 10
116 print *, "hello"
117 !ERROR: `BARRIER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`,`CRITICAL`, `ORDERED`, `ATOMIC` or `MASTER` region.
118 !$omp barrier
119 j = j -1
120 end do
121 !$omp end distribute
122 end do
123 !$omp end master
125 !$omp critical
126 do i = 1, 10
127 !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region.
128 !$omp distribute
129 do k =1, 10
130 print *, "hello"
131 !ERROR: `BARRIER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`,`CRITICAL`, `ORDERED`, `ATOMIC` or `MASTER` region.
132 !$omp barrier
133 j = j -1
134 end do
135 !$omp end distribute
136 end do
137 !$omp end critical
139 !$omp taskloop
140 do i = 1, 10
141 !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region.
142 !$omp distribute
143 do k =1, 10
144 print *, "hello"
145 !ERROR: `BARRIER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`,`CRITICAL`, `ORDERED`, `ATOMIC` or `MASTER` region.
146 !$omp barrier
147 j = j -1
148 end do
149 !$omp end distribute
150 end do
151 !$omp end taskloop
153 !$omp task
154 do i = 1, 10
155 !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region.
156 !$omp distribute
157 do k =1, 10
158 print *, "hello"
159 !ERROR: `BARRIER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`,`CRITICAL`, `ORDERED`, `ATOMIC` or `MASTER` region.
160 !$omp barrier
161 j = j -1
162 end do
163 !$omp end distribute
164 end do
165 !$omp end task
167 end program omp_nest_barrier