1! Explicit '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
9program 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 ! Explicit "private(i0_1)" clause cannot be specified here.
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 ! Explicit "private(i0_2, j0_2)" clause cannot be specified here.
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 private(i1_s) 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 private(i1_c) 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 private(i2_1_s, j2_1_s) 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 private(i2_1_c, j2_1_c) 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 ! Explicit "private(i2_2_s)" clause cannot be specified here.
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 private(j2_2_s) 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 private(i2_3_s) 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 private(j2_3_s) 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 private(i2_3_c) 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 private(j2_3_c) 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 private(i3_1_s, j3_1_s, k3_1_s) 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 private(i3_1_c, j3_1_c, k3_1_c) 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 private(i3_2_s) 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 private(j3_2_s, k3_2_s) 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 private(i3_2_c) 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 private(j3_2_c, k3_2_c) 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 private(i3_3_s, j3_3_s) 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 private(k3_3_s) 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 private(i3_3_c, j3_3_c) 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 private(k3_3_c) 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 private(i3_4_s) 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 private(j3_4_s) 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 private(k3_4_s) 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 private(i3_4_c) 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 private(j3_4_c) 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 private(k3_4_c) 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 ! Explicit "private(i3_5_s)" clause cannot be specified here.
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 private(j3_5_s) 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 private(k3_5_s) 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
248end program test
249