28 lines · plain
1! Test delayed privatization for the `private` clause.2 3! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization \4! RUN: -o - %s 2>&1 | FileCheck %s5! RUN: bbc -emit-hlfir -fopenmp --enable-delayed-privatization -o - %s 2>&1 \6! RUN: | FileCheck %s7 8subroutine delayed_privatization_private9 implicit none10 integer :: var111 12!$omp parallel private(var1)13 var1 = 1014!$omp end parallel15end subroutine16 17! CHECK-LABEL: omp.private {type = private}18! CHECK-SAME: @[[PRIVATIZER_SYM:.*]] : i3219! CHECK-NOT: copy {20 21! CHECK-LABEL: @_QPdelayed_privatization_private22! CHECK: %[[ORIG_ALLOC:.*]] = fir.alloca i32 {bindc_name = "var1", uniq_name = "_QFdelayed_privatization_privateEvar1"}23! CHECK: %[[ORIG_DECL:.*]]:2 = hlfir.declare %[[ORIG_ALLOC]] {uniq_name = "_QFdelayed_privatization_privateEvar1"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)24! CHECK: omp.parallel private(@[[PRIVATIZER_SYM]] %[[ORIG_DECL]]#0 -> %[[PAR_ARG:.*]] : !fir.ref<i32>) {25! CHECK: %[[PAR_ARG_DECL:.*]]:2 = hlfir.declare %[[PAR_ARG]] {uniq_name = "_QFdelayed_privatization_privateEvar1"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)26! CHECK: hlfir.assign %{{.*}} to %[[PAR_ARG_DECL]]#0 : i32, !fir.ref<i32>27! CHECK: omp.terminator28