|
| 1 | +! RUN: %flang_fc1 -fopenmp -mmlir --openmp-enable-delayed-privatization-staging=true -emit-hlfir %s -o - | FileCheck %s |
| 2 | + |
| 3 | +subroutine first_and_lastprivate |
| 4 | + integer i |
| 5 | + integer, dimension(3) :: var |
| 6 | + |
| 7 | + !$omp parallel do lastprivate(i) private(var) |
| 8 | + do i=1,1 |
| 9 | + end do |
| 10 | + !$omp end parallel do |
| 11 | +end subroutine |
| 12 | + |
| 13 | +! CHECK: omp.private {type = private} @[[VAR_PRIVATIZER:.*Evar_private_box_3xi32]] : [[BOX_TYPE:!fir\.box<!fir\.array<3xi32>>]] init { |
| 14 | +! CHECK-NEXT: ^bb0(%[[ORIG_REF:.*]]: {{.*}}, %[[PRIV_REF:.*]]: {{.*}}): |
| 15 | +! CHECK: %[[ORIG_VAL:.*]] = fir.load %[[ORIG_REF]] |
| 16 | +! CHECK: %[[BOX_DIMS:.*]]:3 = fir.box_dims %[[ORIG_VAL]], %{{.*}} : ([[BOX_TYPE]], index) -> (index, index, index) |
| 17 | +! CHECK: %[[SHAPE_SHIFT:.*]] = fir.shape_shift %[[BOX_DIMS]]#0, %[[BOX_DIMS]]#1 |
| 18 | +! CHECK: %[[EMBOX:.*]] = fir.embox %{{.*}}(%[[SHAPE_SHIFT]]) : {{.*}} -> [[BOX_TYPE]] |
| 19 | +! CHECK: fir.store %[[EMBOX]] to %[[PRIV_REF]] |
| 20 | +! CHECK: omp.yield(%[[PRIV_REF]] : !fir.ref<[[BOX_TYPE]]>) |
| 21 | +! CHECK: } |
| 22 | + |
| 23 | +! CHECK: omp.private {type = private} @[[I_PRIVATIZER:.*Ei_private_i32]] : i32 |
| 24 | + |
| 25 | +! CHECK: func.func @{{.*}}first_and_lastprivate() |
| 26 | +! CHECK: %[[ORIG_I_DECL:.*]]:2 = hlfir.declare {{.*}} {uniq_name = "{{.*}}Ei"} |
| 27 | +! CHECK: omp.parallel { |
| 28 | +! CHECK-NOT: omp.barrier |
| 29 | +! CHECK: omp.wsloop private(@[[I_PRIVATIZER]] %[[ORIG_I_DECL]]#0 -> %[[I_ARG:.*]], @[[VAR_PRIVATIZER]] {{.*}}) { |
| 30 | +! CHECK: omp.loop_nest {{.*}} { |
| 31 | +! CHECK: %[[PRIV_I_DECL:.*]]:2 = hlfir.declare %[[I_ARG]] {uniq_name = "{{.*}}Ei"} |
| 32 | +! CHECK: fir.if %{{.*}} { |
| 33 | +! CHECK: %[[PRIV_I_VAL:.*]] = fir.load %[[PRIV_I_DECL]]#0 : !fir.ref<i32> |
| 34 | +! CHECK: hlfir.assign %[[PRIV_I_VAL]] to %[[ORIG_I_DECL]]#0 |
| 35 | +! CHECK: } |
| 36 | +! CHECK: omp.yield |
| 37 | +! CHECK: } |
| 38 | +! CHECK: } |
| 39 | +! CHECK: omp.terminator |
| 40 | +! CHECK: } |
0 commit comments