! When a block variable is marked as implicit private, we can simply ignore ! privatizing that symbol within the context of the currrent OpenMP construct ! since the "private" allocation for the symbol will be emitted within the nested ! block anyway. ! RUN: %flang_fc1 -emit-hlfir -fopenmp %s -o - | FileCheck %s subroutine block_implicit_privatization implicit none integer :: i !$omp task do i=1,10 block integer :: j j = 0 end block end do !$omp end task end subroutine ! CHECK-LABEL: func.func @_QPblock_implicit_privatization() { ! CHECK: %[[I_DECL:.*]]:2 = hlfir.declare %{{.*}} {uniq_name = "{{.*}}Ei"} ! CHECK: omp.task private(@{{.*}}Ei_private_i32 %[[I_DECL]]#0 -> %{{.*}} : !fir.ref) { ! CHECK: fir.do_loop {{.*}} { ! Verify that `j` is allocated whithin the same scope of its block (i.e. inside ! the `task` loop). ! CHECK: fir.alloca i32 {bindc_name = "j", {{.*}}} ! CHECK: } ! CHECK: } ! CHECK: }