]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gfortran.dg/goacc/private-explicit-parallel-1.f95
[PR90048] Fortran OpenACC 'private' clause rejected for predetermined private loop...
[thirdparty/gcc.git] / gcc / testsuite / gfortran.dg / goacc / private-explicit-parallel-1.f95
1 ! Explicit 'private' clauses related to 'do' loops inside an OpenACC
2 ! 'parallel' construct.
3
4 ! { dg-additional-options "-fdump-tree-original -fdump-tree-gimple" }
5
6 ! (The 'independent' clauses are used as end of directive markers in tree dump
7 ! scanning.)
8
9 program test
10 implicit none
11 integer :: i0_1
12 integer :: i0_2, j0_2
13 integer :: i1_s
14 integer :: i1_c
15 integer :: i2_1_s, j2_1_s
16 integer :: i2_1_c, j2_1_c
17 integer :: i2_2_s, j2_2_s
18 integer :: i2_3_s, j2_3_s
19 integer :: i2_3_c, j2_3_c
20 integer :: i3_1_s, j3_1_s, k3_1_s
21 integer :: i3_1_c, j3_1_c, k3_1_c
22 integer :: i3_2_s, j3_2_s, k3_2_s
23 integer :: i3_2_c, j3_2_c, k3_2_c
24 integer :: i3_3_s, j3_3_s, k3_3_s
25 integer :: i3_3_c, j3_3_c, k3_3_c
26 integer :: i3_4_s, j3_4_s, k3_4_s
27 integer :: i3_4_c, j3_4_c, k3_4_c
28 integer :: i3_5_s, j3_5_s, k3_5_s
29
30 !$acc parallel private(i0_1)
31 ! { dg-final { scan-tree-dump-times "#pragma acc parallel private\\(i0_1\\)" 1 "original" } }
32 ! { dg-final { scan-tree-dump-times "#pragma omp target oacc_parallel private\\(i0_1\\)" 1 "gimple" } }
33 ! { dg-final { scan-tree-dump-times "firstprivate\\(i0_1\\)" 0 "gimple" } }
34 do i0_1 = 1, 100
35 end do
36 !$acc end parallel
37
38 !$acc parallel private(i0_2, j0_2)
39 ! { dg-final { scan-tree-dump-times "#pragma acc parallel private\\(i0_2\\) private\\(j0_2\\)" 1 "original" } }
40 ! { dg-final { scan-tree-dump-times "#pragma omp target oacc_parallel private\\(i0_2\\) private\\(j0_2\\)" 1 "gimple" } }
41 ! { dg-final { scan-tree-dump-times "firstprivate\\(i0_2\\)" 0 "gimple" } }
42 ! { dg-final { scan-tree-dump-times "firstprivate\\(j0_2\\)" 0 "gimple" } }
43 do i0_2 = 1, 100
44 do j0_2 = 1, 100
45 end do
46 end do
47 !$acc end parallel
48
49 !$acc parallel
50 !$acc loop private(i1_s) independent
51 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i1_s\\) independent" 1 "original" } }
52 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i1_s\\) independent" 1 "gimple" } }
53 do i1_s = 1, 100
54 end do
55 !$acc end parallel
56
57 !$acc parallel loop private(i1_c) independent
58 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i1_c\\) independent" 1 "original" } }
59 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i1_c\\) independent" 1 "gimple" } }
60 do i1_c = 1, 100
61 end do
62
63 !$acc parallel
64 !$acc loop private(i2_1_s, j2_1_s) independent
65 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i2_1_s\\) private\\(j2_1_s\\) independent" 1 "original" } }
66 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i2_1_s\\) private\\(j2_1_s\\) independent" 1 "gimple" } }
67 do i2_1_s = 1, 100
68 do j2_1_s = 1, 100
69 end do
70 end do
71 !$acc end parallel
72
73 !$acc parallel loop private(i2_1_c, j2_1_c) independent
74 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i2_1_c\\) private\\(j2_1_c\\) independent" 1 "original" } }
75 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i2_1_c\\) private\\(j2_1_c\\) independent" 1 "gimple" } }
76 do i2_1_c = 1, 100
77 do j2_1_c = 1, 100
78 end do
79 end do
80
81 !$acc parallel private(i2_2_s)
82 ! { dg-final { scan-tree-dump-times "#pragma acc parallel private\\(i2_2_s\\)" 1 "original" } }
83 ! { dg-final { scan-tree-dump-times "#pragma omp target oacc_parallel private\\(i2_2_s\\)" 1 "gimple" } }
84 ! { dg-final { scan-tree-dump-times "firstprivate\\(i2_2_s\\)" 0 "gimple" } }
85 do i2_2_s = 1, 100
86 !$acc loop private(j2_2_s) independent
87 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(j2_2_s\\) independent" 1 "original" } }
88 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(j2_2_s\\) independent" 1 "gimple" } }
89 do j2_2_s = 1, 100
90 end do
91 end do
92 !$acc end parallel
93
94 !$acc parallel
95 !$acc loop private(i2_3_s) independent
96 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i2_3_s\\) independent" 1 "original" } }
97 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i2_3_s\\) independent" 1 "gimple" } }
98 do i2_3_s = 1, 100
99 !$acc loop private(j2_3_s) independent
100 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(j2_3_s\\) independent" 1 "original" } }
101 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(j2_3_s\\) independent" 1 "gimple" } }
102 do j2_3_s = 1, 100
103 end do
104 end do
105 !$acc end parallel
106
107 !$acc parallel loop private(i2_3_c) independent
108 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i2_3_c\\) independent" 1 "original" } }
109 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i2_3_c\\) independent" 1 "gimple" } }
110 do i2_3_c = 1, 100
111 !$acc loop private(j2_3_c) independent
112 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(j2_3_c\\) independent" 1 "original" } }
113 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(j2_3_c\\) independent" 1 "gimple" } }
114 do j2_3_c = 1, 100
115 end do
116 end do
117
118 !$acc parallel
119 !$acc loop private(i3_1_s, j3_1_s, k3_1_s) independent
120 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i3_1_s\\) private\\(j3_1_s\\) private\\(k3_1_s\\) independent" 1 "original" } }
121 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i3_1_s\\) private\\(j3_1_s\\) private\\(k3_1_s\\) independent" 1 "gimple" } }
122 do i3_1_s = 1, 100
123 do j3_1_s = 1, 100
124 do k3_1_s = 1, 100
125 end do
126 end do
127 end do
128 !$acc end parallel
129
130 !$acc parallel loop private(i3_1_c, j3_1_c, k3_1_c) independent
131 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i3_1_c\\) private\\(j3_1_c\\) private\\(k3_1_c\\) independent" 1 "original" } }
132 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i3_1_c\\) private\\(j3_1_c\\) private\\(k3_1_c\\) independent" 1 "gimple" } }
133 do i3_1_c = 1, 100
134 do j3_1_c = 1, 100
135 do k3_1_c = 1, 100
136 end do
137 end do
138 end do
139
140 !$acc parallel
141 !$acc loop private(i3_2_s) independent
142 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i3_2_s\\) independent" 1 "original" } }
143 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i3_2_s\\) independent" 1 "gimple" } }
144 do i3_2_s = 1, 100
145 !$acc loop private(j3_2_s, k3_2_s) independent
146 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(j3_2_s\\) private\\(k3_2_s\\) independent" 1 "original" } }
147 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(j3_2_s\\) private\\(k3_2_s\\) independent" 1 "gimple" } }
148 do j3_2_s = 1, 100
149 do k3_2_s = 1, 100
150 end do
151 end do
152 end do
153 !$acc end parallel
154
155 !$acc parallel loop private(i3_2_c) independent
156 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i3_2_c\\) independent" 1 "original" } }
157 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i3_2_c\\) independent" 1 "gimple" } }
158 do i3_2_c = 1, 100
159 !$acc loop private(j3_2_c, k3_2_c) independent
160 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(j3_2_c\\) private\\(k3_2_c\\) independent" 1 "original" } }
161 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(j3_2_c\\) private\\(k3_2_c\\) independent" 1 "gimple" } }
162 do j3_2_c = 1, 100
163 do k3_2_c = 1, 100
164 end do
165 end do
166 end do
167
168 !$acc parallel
169 !$acc loop private(i3_3_s, j3_3_s) independent
170 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i3_3_s\\) private\\(j3_3_s\\) independent" 1 "original" } }
171 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i3_3_s\\) private\\(j3_3_s\\) independent" 1 "gimple" } }
172 do i3_3_s = 1, 100
173 do j3_3_s = 1, 100
174 !$acc loop private(k3_3_s) independent
175 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(k3_3_s\\) independent" 1 "original" } }
176 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(k3_3_s\\) independent" 1 "gimple" } }
177 do k3_3_s = 1, 100
178 end do
179 end do
180 end do
181 !$acc end parallel
182
183 !$acc parallel loop private(i3_3_c, j3_3_c) independent
184 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i3_3_c\\) private\\(j3_3_c\\) independent" 1 "original" } }
185 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i3_3_c\\) private\\(j3_3_c\\) independent" 1 "gimple" } }
186 do i3_3_c = 1, 100
187 do j3_3_c = 1, 100
188 !$acc loop private(k3_3_c) independent
189 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(k3_3_c\\) independent" 1 "original" } }
190 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(k3_3_c\\) independent" 1 "gimple" } }
191 do k3_3_c = 1, 100
192 end do
193 end do
194 end do
195
196 !$acc parallel
197 !$acc loop private(i3_4_s) independent
198 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i3_4_s\\) independent" 1 "original" } }
199 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i3_4_s\\) independent" 1 "gimple" } }
200 do i3_4_s = 1, 100
201 !$acc loop private(j3_4_s) independent
202 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(j3_4_s\\) independent" 1 "original" } }
203 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(j3_4_s\\) independent" 1 "gimple" } }
204 do j3_4_s = 1, 100
205 !$acc loop private(k3_4_s) independent
206 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(k3_4_s\\) independent" 1 "original" } }
207 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(k3_4_s\\) independent" 1 "gimple" } }
208 do k3_4_s = 1, 100
209 end do
210 end do
211 end do
212 !$acc end parallel
213
214 !$acc parallel loop private(i3_4_c) independent
215 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i3_4_c\\) independent" 1 "original" } }
216 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(i3_4_c\\) independent" 1 "gimple" } }
217 do i3_4_c = 1, 100
218 !$acc loop private(j3_4_c) independent
219 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(j3_4_c\\) independent" 1 "original" } }
220 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(j3_4_c\\) independent" 1 "gimple" } }
221 do j3_4_c = 1, 100
222 !$acc loop private(k3_4_c) independent
223 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(k3_4_c\\) independent" 1 "original" } }
224 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(k3_4_c\\) independent" 1 "gimple" } }
225 do k3_4_c = 1, 100
226 end do
227 end do
228 end do
229
230 !$acc parallel private(i3_5_s)
231 ! { dg-final { scan-tree-dump-times "#pragma acc parallel private\\(i3_5_s\\)" 1 "original" } }
232 ! { dg-final { scan-tree-dump-times "#pragma omp target oacc_parallel private\\(i3_5_s\\)" 1 "gimple" } }
233 ! { dg-final { scan-tree-dump-times "firstprivate\\(i3_5_s\\)" 0 "gimple" } }
234 do i3_5_s = 1, 100
235 !$acc loop private(j3_5_s) independent
236 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(j3_5_s\\) independent" 1 "original" } }
237 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(j3_5_s\\) independent" 1 "gimple" } }
238 do j3_5_s = 1, 100
239 !$acc loop private(k3_5_s) independent
240 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(k3_5_s\\) independent" 1 "original" } }
241 ! { dg-final { scan-tree-dump-times "#pragma acc loop private\\(k3_5_s\\) independent" 1 "gimple" } }
242 do k3_5_s = 1, 100
243 end do
244 end do
245 end do
246 !$acc end parallel
247 end program test