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