1!RUN: %flang_fc1 -emit-hlfir -fopenmp %s -o - | FileCheck %s 2 3 4!CHECK-LABEL: omp.private 5!CHECK-SAME: {type = firstprivate} @[[PRIVATIZER:.*]] : !fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>> alloc { 6!CHECK: fir.if 7!CHECK: } copy { 8!CHECK: fir.if 9!CHECK: } dealloc { 10!CHECK: fir.if 11!CHECK: } 12 13!CHECK-LABEL: func @_QPomp_task_nested_allocatable_firstprivate 14subroutine omp_task_nested_allocatable_firstprivate 15 integer, allocatable :: a(:) 16 17 allocate(a(7)) 18 a = 10 19 20!CHECK: %[[A:.*]]:2 = hlfir.declare %{{.*}} {fortran_attrs = #fir.var_attrs<allocatable>, 21!CHECK-SAME: uniq_name = "_QFomp_task_nested_allocatable_firstprivateEa"} : 22!CHECK-SAME: (!fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>) -> 23!CHECK-SAME: (!fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>, !fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>) 24!CHECK: omp.task { 25 !$omp task default(firstprivate) 26!CHECK: omp.task private(@[[PRIVATIZER]] %[[A]]#0 -> %[[A_ARG:.*]] : !fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>) { 27!CHECK: %[[PRIV_A:.*]]:2 = hlfir.declare %{{.*}} {fortran_attrs = #fir.var_attrs<allocatable>, 28!CHECK-SAME: uniq_name = "_QFomp_task_nested_allocatable_firstprivateEa"} : 29!CHECK-SAME: (!fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>) -> 30!CHECK-SAME: (!fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>, !fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>) 31 !$omp task default(firstprivate) 32 a = 2 33!CHECK: } 34 !$omp end task 35!CHECK: } 36 !$omp end task 37end subroutine 38