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