brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 5bf634c Raw
42 lines · plain
1! RUN: %flang_fc1 -fopenmp -mmlir --enable-delayed-privatization-staging=true -emit-hlfir %s -o - | FileCheck %s2 3subroutine first_and_lastprivate(var)4  integer i5  integer, dimension(:) :: var6 7  !$omp parallel do lastprivate(i) private(var)8  do i=1,19  end do10  !$omp end parallel do11end subroutine12 13! CHECK:      omp.private {type = private} @[[VAR_PRIVATIZER:.*Evar_private_box_Uxi32]] : [[BOX_TYPE:!fir\.box<!fir\.array<\?xi32>>]] init {14! CHECK-NEXT: ^bb0(%[[ORIG_REF:.*]]: {{.*}}, %[[PRIV_REF:.*]]: {{.*}}):15! CHECK:        %[[ORIG_VAL:.*]] = fir.load %[[ORIG_REF]]16! CHECK:        %[[BOX_DIMS_0:.*]]:3 = fir.box_dims %[[ORIG_VAL]], %{{.*}} : ([[BOX_TYPE]], index) -> (index, index, index)17! CHECK:        %[[BOX_DIMS:.*]]:3 = fir.box_dims %[[ORIG_VAL]], %{{.*}} : ([[BOX_TYPE]], index) -> (index, index, index)18! CHECK:        %[[SHAPE_SHIFT:.*]] = fir.shape_shift %[[BOX_DIMS]]#0, %[[BOX_DIMS]]#119! CHECK:        %[[EMBOX:.*]] = fir.rebox %{{.*}}(%[[SHAPE_SHIFT]]) : {{.*}} -> [[BOX_TYPE]]20! CHECK:        fir.store %[[EMBOX]] to %[[PRIV_REF]]21! CHECK:        omp.yield(%[[PRIV_REF]] : !fir.ref<[[BOX_TYPE]]>)22! CHECK:      }23 24! CHECK: omp.private {type = private} @[[I_PRIVATIZER:.*Ei_private_i32]] : i3225 26! CHECK:     func.func @{{.*}}first_and_lastprivate({{.*}})27! CHECK:       %[[ORIG_I_DECL:.*]]:2 = hlfir.declare {{.*}} {uniq_name = "{{.*}}Ei"}28! CHECK:       omp.parallel {29! CHECK-NOT:      omp.barrier30! CHECK:          omp.wsloop private(@[[I_PRIVATIZER]] %[[ORIG_I_DECL]]#0 -> %[[I_ARG:.*]], @[[VAR_PRIVATIZER]] {{.*}}) {31! CHECK:            omp.loop_nest {{.*}} {32! CHECK:              %[[PRIV_I_DECL:.*]]:2 = hlfir.declare %[[I_ARG]] {uniq_name = "{{.*}}Ei"}33! CHECK:              fir.if %{{.*}} {34! CHECK:                %[[PRIV_I_VAL:.*]] = fir.load %[[PRIV_I_DECL]]#0 : !fir.ref<i32>35! CHECK:                hlfir.assign %[[PRIV_I_VAL]] to %[[ORIG_I_DECL]]#036! CHECK:              }37! CHECK:              omp.yield38! CHECK:            }39! CHECK:          }40! CHECK:          omp.terminator41! CHECK:        }42