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 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 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 247end program test 248