39 lines · plain
1! RUN: %flang_fc1 -emit-hlfir -mmlir --enable-delayed-privatization-staging=true -o - %s | FileCheck %s2 3subroutine local_assoc4 implicit none5 integer i6 real, dimension(2:11) :: aa7 8 associate(a => aa(4:))9 do concurrent (i = 4:11) local(a)10 a(i) = 011 end do12 end associate13end subroutine local_assoc14 15! CHECK: fir.local {type = local} @[[LOCALIZER:.*local_assocEa.*]] : !fir.box<!fir.array<8xf32>> init {16! CHECK-NEXT: ^{{.*}}(%{{.*}}: !{{.*}}, %[[LOCAL_ARG:.*]]: !{{.*}}):17! CHECK-NEXT: %[[C8:.*]] = arith.constant 8 : index18! CHECK-NEXT: %[[SHAPE:.*]] = fir.shape %[[C8]]19! CHECK-NEXT: %[[TMP_ALLOC:.*]] = fir.allocmem !{{.*}} {bindc_name = ".tmp", {{.*}}}20! CHECK: %[[TMP_DECL:.*]]:2 = hlfir.declare %[[TMP_ALLOC]](%[[SHAPE]])21! CHECK: %[[C1:.*]] = arith.constant 1 : index22! CHECK-NEXT: %[[C8:.*]] = arith.constant 8 : index23! CHECK-NEXT: %[[SHAPE_SHIFT:.*]] = fir.shape_shift %[[C1]], %[[C8]]24! CHECK-NEXT: %[[TMP_BOX:.*]] = fir.embox %[[TMP_DECL]]#0(%[[SHAPE_SHIFT]])25! CHECK-NEXT: fir.store %[[TMP_BOX]] to %[[LOCAL_ARG]]26! CHECK-NEXT: fir.yield(%[[LOCAL_ARG]] : !fir.ref<!fir.box<!fir.array<8xf32>>>)27! CHECK-NEXT: }28 29! CHECK: func.func @_QPlocal_assoc()30! CHECK: %[[BOX_REF:.*]] = fir.alloca !fir.box<!fir.array<8xf32>>31! CHECK: %[[ASSOC_DECL:.*]]:2 = hlfir.declare %{{.*}}(%{{.*}}) {uniq_name = "{{.*}}local_assocEa"}32! CHECK: %[[ASSOC_BOX:.*]] = fir.embox %[[ASSOC_DECL]]#0(%{{.*}})33! CHECK: fir.store %[[ASSOC_BOX]] to %[[BOX_REF]]34! CHECK: fir.do_concurrent.loop {{.*}} local(@[[LOCALIZER]] %[[BOX_REF]] -> %[[LOCAL_ARG:.*]] : !fir.ref<!fir.box<!fir.array<8xf32>>>) {35! CHECK: %[[LOCAL_DECL:.*]]:2 = hlfir.declare %[[LOCAL_ARG]]36! CHECK: %[[LOCAL_LD:.*]] = fir.load %[[LOCAL_DECL]]#0 : !fir.ref<!fir.box<!fir.array<8xf32>>>37! CHECK: hlfir.designate %[[LOCAL_LD]] (%{{.*}})38! CHECK: }39