blob: 32b26ac01f181cb86ce9a0753bd6cab6379d9af8 [file] [edit]
! 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<i32>) {
! 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: }