|
3 | 3 | ! RUN: bbc -fopenacc -emit-fir %s -o - | FileCheck %s --check-prefixes=CHECK,FIR
|
4 | 4 | ! RUN: bbc -fopenacc -emit-hlfir %s -o - | FileCheck %s --check-prefixes=CHECK,HLFIR
|
5 | 5 |
|
| 6 | +! CHECK-LABEL: acc.private.recipe @"privatization_box_?xi32" : !fir.box<!fir.array<?xi32>> init { |
| 7 | +! CHECK: ^bb0(%[[ARG0:.*]]: !fir.box<!fir.array<?xi32>>): |
| 8 | +! HLFIR: %[[C0:.*]] = arith.constant 0 : index |
| 9 | +! HLFIR: %[[BOX_DIMS:.*]]:3 = fir.box_dims %[[ARG0]], %[[C0]] : (!fir.box<!fir.array<?xi32>>, index) -> (index, index, index) |
| 10 | +! HLFIR: %[[SHAPE:.*]] = fir.shape %[[BOX_DIMS]]#1 : (index) -> !fir.shape<1> |
| 11 | +! HLFIR: %[[TEMP:.*]] = fir.allocmem !fir.array<?xi32>, %0#1 {bindc_name = ".tmp", uniq_name = ""} |
| 12 | +! HLFIR: %[[DECLARE:.*]]:2 = hlfir.declare %[[TEMP]](%[[SHAPE]]) {uniq_name = ".tmp"} : (!fir.heap<!fir.array<?xi32>>, !fir.shape<1>) -> (!fir.box<!fir.array<?xi32>>, !fir.heap<!fir.array<?xi32>>) |
| 13 | +! HLFIR: acc.yield %[[DECLARE:.*]]#0 : !fir.box<!fir.array<?xi32>> |
| 14 | +! CHECK: } |
| 15 | + |
6 | 16 | ! CHECK-LABEL: acc.firstprivate.recipe @firstprivatization_ref_50xf32 : !fir.ref<!fir.array<50xf32>> init {
|
7 | 17 | ! CHECK: ^bb0(%{{.*}}: !fir.ref<!fir.array<50xf32>>):
|
8 | 18 | ! CHECK: %[[ALLOCA:.*]] = fir.alloca !fir.array<50xf32>
|
@@ -169,3 +179,19 @@ program acc_private
|
169 | 179 | ! CHECK: acc.parallel firstprivate(@firstprivatization_ref_50xf32 -> %[[FP_B]] : !fir.ref<!fir.array<50xf32>>)
|
170 | 180 |
|
171 | 181 | end program
|
| 182 | + |
| 183 | +subroutine acc_private_assumed_shape(a, n) |
| 184 | + integer :: a(:), i, n |
| 185 | + |
| 186 | + !$acc parallel loop private(a) |
| 187 | + do i = 1, n |
| 188 | + a(i) = i |
| 189 | + end do |
| 190 | +end subroutine |
| 191 | + |
| 192 | +! CHECK-LABEL: func.func @_QPacc_private_assumed_shape( |
| 193 | +! CHECK-SAME: %[[ARG0:.*]]: !fir.box<!fir.array<?xi32>> {fir.bindc_name = "a"} |
| 194 | +! HLFIR: %[[DECL_A:.*]]:2 = hlfir.declare %arg0 {uniq_name = "_QFacc_private_assumed_shapeEa"} : (!fir.box<!fir.array<?xi32>>) -> (!fir.box<!fir.array<?xi32>>, !fir.box<!fir.array<?xi32>>) |
| 195 | +! HLFIR: %[[ADDR:.*]] = fir.box_addr %[[DECL_A]]#1 : (!fir.box<!fir.array<?xi32>>) -> !fir.ref<!fir.array<?xi32>> |
| 196 | +! HLFIR: %[[PRIVATE:.*]] = acc.private varPtr(%[[ADDR]] : !fir.ref<!fir.array<?xi32>>) bounds(%{{.*}}) -> !fir.ref<!fir.array<?xi32>> {name = "a"} |
| 197 | +! HLFIR: acc.parallel private(@"privatization_box_?xi32" -> %[[PRIVATE]] : !fir.ref<!fir.array<?xi32>>) { |
0 commit comments