// RUN: fir-opt --mif-convert %s | FileCheck %s module attributes {dlti.dl_spec = #dlti.dl_spec = dense<32> : vector<4xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, i64 = dense<64> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, f80 = dense<128> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i1 = dense<8> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, "dlti.endianness" = "little", "dlti.mangling_mode" = "e", "dlti.legal_int_widths" = array, "dlti.stack_alignment" = 128 : i64>, fir.defaultkind = "a1c4d8i4l4r4", fir.kindmap = "", llvm.data_layout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128", llvm.ident = "flang version 23.0.0 (git@github.com:SiPearl/llvm-project.git 3d6a6306c5cd826a2306fd17b1f65de34bcf866b)", llvm.target_triple = "x86_64-unknown-linux-gnu"} { func.func @_QQmain() attributes {fir.bindc_name = "ALLOC_TEST"} { %0 = fir.alloca !fir.array<1xi64> %1 = fir.alloca !fir.array<1xi64> %2 = fir.alloca !fir.array<1xi64> %3 = fir.alloca !fir.array<1xi64> %4 = fir.alloca !fir.array<3xi64> %5 = fir.alloca !fir.array<3xi64> %6 = fir.alloca !fir.array<2xi64> %7 = fir.alloca !fir.array<2xi64> %8 = fir.alloca !fir.array<1xi64> %9 = fir.alloca !fir.array<1xi64> %10 = fir.alloca !fir.array<3xi64> %11 = fir.alloca !fir.array<3xi64> %12 = fir.alloca !fir.array<2xi64> %13 = fir.alloca !fir.array<2xi64> %14 = fir.dummy_scope : !fir.dscope %15 = fir.address_of(@_QFE.n.my_type2) : !fir.ref> %c8 = arith.constant 8 : index %16:2 = hlfir.declare %15 typeparams %c8 {fortran_attrs = #fir.var_attrs, uniq_name = "_QFE.n.my_type2"} : (!fir.ref>, index) -> (!fir.ref>, !fir.ref>) %17 = fir.address_of(@_QFE.n.co) : !fir.ref> %c2 = arith.constant 2 : index %18:2 = hlfir.declare %17 typeparams %c2 {fortran_attrs = #fir.var_attrs, uniq_name = "_QFE.n.co"} : (!fir.ref>, index) -> (!fir.ref>, !fir.ref>) %19 = fir.address_of(@_QFE.n.x) : !fir.ref> %c1 = arith.constant 1 : index %20:2 = hlfir.declare %19 typeparams %c1 {fortran_attrs = #fir.var_attrs, uniq_name = "_QFE.n.x"} : (!fir.ref>, index) -> (!fir.ref>, !fir.ref>) %21 = fir.address_of(@_QFE.n.y) : !fir.ref> %c1_0 = arith.constant 1 : index %22:2 = hlfir.declare %21 typeparams %c1_0 {fortran_attrs = #fir.var_attrs, uniq_name = "_QFE.n.y"} : (!fir.ref>, index) -> (!fir.ref>, !fir.ref>) %23 = fir.address_of(@_QFE.n.z) : !fir.ref> %c1_1 = arith.constant 1 : index %24:2 = hlfir.declare %23 typeparams %c1_1 {fortran_attrs = #fir.var_attrs, uniq_name = "_QFE.n.z"} : (!fir.ref>, index) -> (!fir.ref>, !fir.ref>) %25 = fir.address_of(@_QFE.n.my_type) : !fir.ref> %c7 = arith.constant 7 : index %26:2 = hlfir.declare %25 typeparams %c7 {fortran_attrs = #fir.var_attrs, uniq_name = "_QFE.n.my_type"} : (!fir.ref>, index) -> (!fir.ref>, !fir.ref>) %27 = fir.address_of(@_QFEa) : !fir.ref %c1_i64 = arith.constant 1 : i64 %c0 = arith.constant 0 : index %28 = fir.coordinate_of %13, %c0 : (!fir.ref>, index) -> !fir.ref fir.store %c1_i64 to %28 : !fir.ref %c1_i64_2 = arith.constant 1 : i64 %c1_3 = arith.constant 1 : index %29 = fir.coordinate_of %13, %c1_3 : (!fir.ref>, index) -> !fir.ref fir.store %c1_i64_2 to %29 : !fir.ref %30 = fir.embox %13 : (!fir.ref>) -> !fir.box> %c1_i64_4 = arith.constant 1 : i64 %c0_5 = arith.constant 0 : index %31 = fir.coordinate_of %12, %c0_5 : (!fir.ref>, index) -> !fir.ref fir.store %c1_i64_4 to %31 : !fir.ref %c1_i64_6 = arith.constant 1 : i64 %c1_7 = arith.constant 1 : index %32 = fir.coordinate_of %12, %c1_7 : (!fir.ref>, index) -> !fir.ref fir.store %c1_i64_6 to %32 : !fir.ref %33 = fir.embox %12 : (!fir.ref>) -> !fir.box> // CHECK: fir.call @_QMprifPprif_allocate_coarray({{.*}}) : (!fir.box>, !fir.box>, !fir.ref, !fir.ref, !fir.box, !fir.ptr, !fir.ref, !fir.box>, !fir.box>) -> () mif.alloc_coarray %27 lcobounds %30 ucobounds %33 {uniq_name = "_QFEa"} : (!fir.ref, !fir.box>, !fir.box>) -> () %34:2 = hlfir.declare %27 {uniq_name = "_QFEa"} : (!fir.ref) -> (!fir.ref, !fir.ref) %35 = fir.address_of(@_QFEa2) : !fir.ref>> %36:2 = hlfir.declare %35 {fortran_attrs = #fir.var_attrs, uniq_name = "_QFEa2"} : (!fir.ref>>) -> (!fir.ref>>, !fir.ref>>) %37 = fir.address_of(@_QFEb) : !fir.ref %c3_i64 = arith.constant 3 : i64 %c0_8 = arith.constant 0 : index %38 = fir.coordinate_of %11, %c0_8 : (!fir.ref>, index) -> !fir.ref fir.store %c3_i64 to %38 : !fir.ref %c1_i64_9 = arith.constant 1 : i64 %c1_10 = arith.constant 1 : index %39 = fir.coordinate_of %11, %c1_10 : (!fir.ref>, index) -> !fir.ref fir.store %c1_i64_9 to %39 : !fir.ref %c1_i64_11 = arith.constant 1 : i64 %c2_12 = arith.constant 2 : index %40 = fir.coordinate_of %11, %c2_12 : (!fir.ref>, index) -> !fir.ref fir.store %c1_i64_11 to %40 : !fir.ref %41 = fir.embox %11 : (!fir.ref>) -> !fir.box> %c3_i64_13 = arith.constant 3 : i64 %c0_14 = arith.constant 0 : index %42 = fir.coordinate_of %10, %c0_14 : (!fir.ref>, index) -> !fir.ref fir.store %c3_i64_13 to %42 : !fir.ref %c1_i64_15 = arith.constant 1 : i64 %c1_16 = arith.constant 1 : index %43 = fir.coordinate_of %10, %c1_16 : (!fir.ref>, index) -> !fir.ref fir.store %c1_i64_15 to %43 : !fir.ref %c1_i64_17 = arith.constant 1 : i64 %c2_18 = arith.constant 2 : index %44 = fir.coordinate_of %10, %c2_18 : (!fir.ref>, index) -> !fir.ref fir.store %c1_i64_17 to %44 : !fir.ref %45 = fir.embox %10 : (!fir.ref>) -> !fir.box> // CHECK: fir.call @_QMprifPprif_allocate_coarray({{.*}}) : (!fir.box>, !fir.box>, !fir.ref, !fir.ref, !fir.box, !fir.ptr, !fir.ref, !fir.box>, !fir.box>) -> () mif.alloc_coarray %37 lcobounds %41 ucobounds %45 {uniq_name = "_QFEb"} : (!fir.ref, !fir.box>, !fir.box>) -> () %46:2 = hlfir.declare %37 {uniq_name = "_QFEb"} : (!fir.ref) -> (!fir.ref, !fir.ref) %47 = fir.address_of(@_QFEb2) : !fir.ref>> %48:2 = hlfir.declare %47 {fortran_attrs = #fir.var_attrs, uniq_name = "_QFEb2"} : (!fir.ref>>) -> (!fir.ref>>, !fir.ref>>) %49 = fir.address_of(@_QFEc) : !fir.ref> %c10 = arith.constant 10 : index %c1_i64_19 = arith.constant 1 : i64 %c0_20 = arith.constant 0 : index %50 = fir.coordinate_of %9, %c0_20 : (!fir.ref>, index) -> !fir.ref fir.store %c1_i64_19 to %50 : !fir.ref %51 = fir.embox %9 : (!fir.ref>) -> !fir.box> %c1_i64_21 = arith.constant 1 : i64 %c0_22 = arith.constant 0 : index %52 = fir.coordinate_of %8, %c0_22 : (!fir.ref>, index) -> !fir.ref fir.store %c1_i64_21 to %52 : !fir.ref %53 = fir.embox %8 : (!fir.ref>) -> !fir.box> // CHECK: fir.call @_QMprifPprif_allocate_coarray({{.*}}) : (!fir.box>, !fir.box>, !fir.ref, !fir.ref, !fir.box, !fir.ptr, !fir.ref, !fir.box>, !fir.box>) -> () mif.alloc_coarray %49 lcobounds %51 ucobounds %53 {uniq_name = "_QFEc"} : (!fir.ref>, !fir.box>, !fir.box>) -> () %54:2 = hlfir.declare %49 typeparams %c10 {uniq_name = "_QFEc"} : (!fir.ref>, index) -> (!fir.ref>, !fir.ref>) %55 = fir.address_of(@_QFEc2) : !fir.ref>>>> %56:2 = hlfir.declare %55 {fortran_attrs = #fir.var_attrs, uniq_name = "_QFEc2"} : (!fir.ref>>>>) -> (!fir.ref>>>>, !fir.ref>>>>) %57 = fir.address_of(@_QFEd) : !fir.ref>>,z:!fir.type<_QFTmy_type2{co:!fir.box>}>}>> %58:2 = hlfir.declare %57 {uniq_name = "_QFEd"} : (!fir.ref>>,z:!fir.type<_QFTmy_type2{co:!fir.box>}>}>>) -> (!fir.ref>>,z:!fir.type<_QFTmy_type2{co:!fir.box>}>}>>, !fir.ref>>,z:!fir.type<_QFTmy_type2{co:!fir.box>}>}>>) %59 = fir.address_of(@_QFE.c.my_type2) : !fir.ref>>,genre:i8,category:i8,kind:i8,rank:i8,memoryspace:i8,__padding0:!fir.array<3xi8>,offset:i64,characterlen:!fir.type<_QM__fortran_type_infoTvalue{genre:i8,__padding0:!fir.array<7xi8>,value:i64}>,derived:!fir.box,name:!fir.box>>}>>>>,name:!fir.box>>,sizeinbytes:i64,uninstantiated:!fir.box>>,kindparameter:!fir.box>>,lenparameterkind:!fir.box>>,component:!fir.box>>>,procptr:!fir.box>>,offset:i64,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,special:!fir.box,proc:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,specialbitset:i32,hasparent:i8,noinitializationneeded:i8,nodestructionneeded:i8,nofinalizationneeded:i8,nodefinedassignment:i8,__padding0:!fir.array<3xi8>}>>>,lenvalue:!fir.box,value:i64}>>>>,bounds:!fir.box,value:i64}>>>>,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>> %c0_23 = arith.constant 0 : index %c1_24 = arith.constant 1 : index %60 = fir.shape_shift %c0_23, %c1_24 : (index, index) -> !fir.shapeshift<1> %61:2 = hlfir.declare %59(%60) {fortran_attrs = #fir.var_attrs, uniq_name = "_QFE.c.my_type2"} : (!fir.ref>>,genre:i8,category:i8,kind:i8,rank:i8,memoryspace:i8,__padding0:!fir.array<3xi8>,offset:i64,characterlen:!fir.type<_QM__fortran_type_infoTvalue{genre:i8,__padding0:!fir.array<7xi8>,value:i64}>,derived:!fir.box,name:!fir.box>>}>>>>,name:!fir.box>>,sizeinbytes:i64,uninstantiated:!fir.box>>,kindparameter:!fir.box>>,lenparameterkind:!fir.box>>,component:!fir.box>>>,procptr:!fir.box>>,offset:i64,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,special:!fir.box,proc:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,specialbitset:i32,hasparent:i8,noinitializationneeded:i8,nodestructionneeded:i8,nofinalizationneeded:i8,nodefinedassignment:i8,__padding0:!fir.array<3xi8>}>>>,lenvalue:!fir.box,value:i64}>>>>,bounds:!fir.box,value:i64}>>>>,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>>, !fir.shapeshift<1>) -> (!fir.box>>,genre:i8,category:i8,kind:i8,rank:i8,memoryspace:i8,__padding0:!fir.array<3xi8>,offset:i64,characterlen:!fir.type<_QM__fortran_type_infoTvalue{genre:i8,__padding0:!fir.array<7xi8>,value:i64}>,derived:!fir.box,name:!fir.box>>}>>>>,name:!fir.box>>,sizeinbytes:i64,uninstantiated:!fir.box>>,kindparameter:!fir.box>>,lenparameterkind:!fir.box>>,component:!fir.box>>>,procptr:!fir.box>>,offset:i64,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,special:!fir.box,proc:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,specialbitset:i32,hasparent:i8,noinitializationneeded:i8,nodestructionneeded:i8,nofinalizationneeded:i8,nodefinedassignment:i8,__padding0:!fir.array<3xi8>}>>>,lenvalue:!fir.box,value:i64}>>>>,bounds:!fir.box,value:i64}>>>>,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>>, !fir.ref>>,genre:i8,category:i8,kind:i8,rank:i8,memoryspace:i8,__padding0:!fir.array<3xi8>,offset:i64,characterlen:!fir.type<_QM__fortran_type_infoTvalue{genre:i8,__padding0:!fir.array<7xi8>,value:i64}>,derived:!fir.box,name:!fir.box>>}>>>>,name:!fir.box>>,sizeinbytes:i64,uninstantiated:!fir.box>>,kindparameter:!fir.box>>,lenparameterkind:!fir.box>>,component:!fir.box>>>,procptr:!fir.box>>,offset:i64,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,special:!fir.box,proc:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,specialbitset:i32,hasparent:i8,noinitializationneeded:i8,nodestructionneeded:i8,nofinalizationneeded:i8,nodefinedassignment:i8,__padding0:!fir.array<3xi8>}>>>,lenvalue:!fir.box,value:i64}>>>>,bounds:!fir.box,value:i64}>>>>,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>>) %62 = fir.address_of(@_QFE.dt.my_type) : !fir.ref,name:!fir.box>>}>>>>,name:!fir.box>>,sizeinbytes:i64,uninstantiated:!fir.box>>,kindparameter:!fir.box>>,lenparameterkind:!fir.box>>,component:!fir.box>>,genre:i8,category:i8,kind:i8,rank:i8,memoryspace:i8,__padding0:!fir.array<3xi8>,offset:i64,characterlen:!fir.type<_QM__fortran_type_infoTvalue{genre:i8,__padding0:!fir.array<7xi8>,value:i64}>,derived:!fir.box>>,lenvalue:!fir.box,value:i64}>>>>,bounds:!fir.box,value:i64}>>>>,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>>>,procptr:!fir.box>>,offset:i64,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,special:!fir.box,proc:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,specialbitset:i32,hasparent:i8,noinitializationneeded:i8,nodestructionneeded:i8,nofinalizationneeded:i8,nodefinedassignment:i8,__padding0:!fir.array<3xi8>}>> %63:2 = hlfir.declare %62 {fortran_attrs = #fir.var_attrs, uniq_name = "_QFE.dt.my_type"} : (!fir.ref,name:!fir.box>>}>>>>,name:!fir.box>>,sizeinbytes:i64,uninstantiated:!fir.box>>,kindparameter:!fir.box>>,lenparameterkind:!fir.box>>,component:!fir.box>>,genre:i8,category:i8,kind:i8,rank:i8,memoryspace:i8,__padding0:!fir.array<3xi8>,offset:i64,characterlen:!fir.type<_QM__fortran_type_infoTvalue{genre:i8,__padding0:!fir.array<7xi8>,value:i64}>,derived:!fir.box>>,lenvalue:!fir.box,value:i64}>>>>,bounds:!fir.box,value:i64}>>>>,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>>>,procptr:!fir.box>>,offset:i64,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,special:!fir.box,proc:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,specialbitset:i32,hasparent:i8,noinitializationneeded:i8,nodestructionneeded:i8,nofinalizationneeded:i8,nodefinedassignment:i8,__padding0:!fir.array<3xi8>}>>) -> (!fir.ref,name:!fir.box>>}>>>>,name:!fir.box>>,sizeinbytes:i64,uninstantiated:!fir.box>>,kindparameter:!fir.box>>,lenparameterkind:!fir.box>>,component:!fir.box>>,genre:i8,category:i8,kind:i8,rank:i8,memoryspace:i8,__padding0:!fir.array<3xi8>,offset:i64,characterlen:!fir.type<_QM__fortran_type_infoTvalue{genre:i8,__padding0:!fir.array<7xi8>,value:i64}>,derived:!fir.box>>,lenvalue:!fir.box,value:i64}>>>>,bounds:!fir.box,value:i64}>>>>,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>>>,procptr:!fir.box>>,offset:i64,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,special:!fir.box,proc:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,specialbitset:i32,hasparent:i8,noinitializationneeded:i8,nodestructionneeded:i8,nofinalizationneeded:i8,nodefinedassignment:i8,__padding0:!fir.array<3xi8>}>>, !fir.ref,name:!fir.box>>}>>>>,name:!fir.box>>,sizeinbytes:i64,uninstantiated:!fir.box>>,kindparameter:!fir.box>>,lenparameterkind:!fir.box>>,component:!fir.box>>,genre:i8,category:i8,kind:i8,rank:i8,memoryspace:i8,__padding0:!fir.array<3xi8>,offset:i64,characterlen:!fir.type<_QM__fortran_type_infoTvalue{genre:i8,__padding0:!fir.array<7xi8>,value:i64}>,derived:!fir.box>>,lenvalue:!fir.box,value:i64}>>>>,bounds:!fir.box,value:i64}>>>>,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>>>,procptr:!fir.box>>,offset:i64,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,special:!fir.box,proc:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,specialbitset:i32,hasparent:i8,noinitializationneeded:i8,nodestructionneeded:i8,nofinalizationneeded:i8,nodefinedassignment:i8,__padding0:!fir.array<3xi8>}>>) %64 = fir.address_of(@_QFE.dt.my_type2) : !fir.ref,name:!fir.box>>}>>>>,name:!fir.box>>,sizeinbytes:i64,uninstantiated:!fir.box>>,kindparameter:!fir.box>>,lenparameterkind:!fir.box>>,component:!fir.box>>,genre:i8,category:i8,kind:i8,rank:i8,memoryspace:i8,__padding0:!fir.array<3xi8>,offset:i64,characterlen:!fir.type<_QM__fortran_type_infoTvalue{genre:i8,__padding0:!fir.array<7xi8>,value:i64}>,derived:!fir.box>>,lenvalue:!fir.box,value:i64}>>>>,bounds:!fir.box,value:i64}>>>>,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>>>,procptr:!fir.box>>,offset:i64,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,special:!fir.box,proc:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,specialbitset:i32,hasparent:i8,noinitializationneeded:i8,nodestructionneeded:i8,nofinalizationneeded:i8,nodefinedassignment:i8,__padding0:!fir.array<3xi8>}>> %65:2 = hlfir.declare %64 {fortran_attrs = #fir.var_attrs, uniq_name = "_QFE.dt.my_type2"} : (!fir.ref,name:!fir.box>>}>>>>,name:!fir.box>>,sizeinbytes:i64,uninstantiated:!fir.box>>,kindparameter:!fir.box>>,lenparameterkind:!fir.box>>,component:!fir.box>>,genre:i8,category:i8,kind:i8,rank:i8,memoryspace:i8,__padding0:!fir.array<3xi8>,offset:i64,characterlen:!fir.type<_QM__fortran_type_infoTvalue{genre:i8,__padding0:!fir.array<7xi8>,value:i64}>,derived:!fir.box>>,lenvalue:!fir.box,value:i64}>>>>,bounds:!fir.box,value:i64}>>>>,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>>>,procptr:!fir.box>>,offset:i64,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,special:!fir.box,proc:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,specialbitset:i32,hasparent:i8,noinitializationneeded:i8,nodestructionneeded:i8,nofinalizationneeded:i8,nodefinedassignment:i8,__padding0:!fir.array<3xi8>}>>) -> (!fir.ref,name:!fir.box>>}>>>>,name:!fir.box>>,sizeinbytes:i64,uninstantiated:!fir.box>>,kindparameter:!fir.box>>,lenparameterkind:!fir.box>>,component:!fir.box>>,genre:i8,category:i8,kind:i8,rank:i8,memoryspace:i8,__padding0:!fir.array<3xi8>,offset:i64,characterlen:!fir.type<_QM__fortran_type_infoTvalue{genre:i8,__padding0:!fir.array<7xi8>,value:i64}>,derived:!fir.box>>,lenvalue:!fir.box,value:i64}>>>>,bounds:!fir.box,value:i64}>>>>,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>>>,procptr:!fir.box>>,offset:i64,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,special:!fir.box,proc:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,specialbitset:i32,hasparent:i8,noinitializationneeded:i8,nodestructionneeded:i8,nofinalizationneeded:i8,nodefinedassignment:i8,__padding0:!fir.array<3xi8>}>>, !fir.ref,name:!fir.box>>}>>>>,name:!fir.box>>,sizeinbytes:i64,uninstantiated:!fir.box>>,kindparameter:!fir.box>>,lenparameterkind:!fir.box>>,component:!fir.box>>,genre:i8,category:i8,kind:i8,rank:i8,memoryspace:i8,__padding0:!fir.array<3xi8>,offset:i64,characterlen:!fir.type<_QM__fortran_type_infoTvalue{genre:i8,__padding0:!fir.array<7xi8>,value:i64}>,derived:!fir.box>>,lenvalue:!fir.box,value:i64}>>>>,bounds:!fir.box,value:i64}>>>>,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>>>,procptr:!fir.box>>,offset:i64,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,special:!fir.box,proc:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,specialbitset:i32,hasparent:i8,noinitializationneeded:i8,nodestructionneeded:i8,nofinalizationneeded:i8,nodefinedassignment:i8,__padding0:!fir.array<3xi8>}>>) %66 = fir.address_of(@_QFE.c.my_type) : !fir.ref>>,genre:i8,category:i8,kind:i8,rank:i8,memoryspace:i8,__padding0:!fir.array<3xi8>,offset:i64,characterlen:!fir.type<_QM__fortran_type_infoTvalue{genre:i8,__padding0:!fir.array<7xi8>,value:i64}>,derived:!fir.box,name:!fir.box>>}>>>>,name:!fir.box>>,sizeinbytes:i64,uninstantiated:!fir.box>>,kindparameter:!fir.box>>,lenparameterkind:!fir.box>>,component:!fir.box>>>,procptr:!fir.box>>,offset:i64,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,special:!fir.box,proc:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,specialbitset:i32,hasparent:i8,noinitializationneeded:i8,nodestructionneeded:i8,nofinalizationneeded:i8,nodefinedassignment:i8,__padding0:!fir.array<3xi8>}>>>,lenvalue:!fir.box,value:i64}>>>>,bounds:!fir.box,value:i64}>>>>,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>> %c0_25 = arith.constant 0 : index %c3 = arith.constant 3 : index %67 = fir.shape_shift %c0_25, %c3 : (index, index) -> !fir.shapeshift<1> %68:2 = hlfir.declare %66(%67) {fortran_attrs = #fir.var_attrs, uniq_name = "_QFE.c.my_type"} : (!fir.ref>>,genre:i8,category:i8,kind:i8,rank:i8,memoryspace:i8,__padding0:!fir.array<3xi8>,offset:i64,characterlen:!fir.type<_QM__fortran_type_infoTvalue{genre:i8,__padding0:!fir.array<7xi8>,value:i64}>,derived:!fir.box,name:!fir.box>>}>>>>,name:!fir.box>>,sizeinbytes:i64,uninstantiated:!fir.box>>,kindparameter:!fir.box>>,lenparameterkind:!fir.box>>,component:!fir.box>>>,procptr:!fir.box>>,offset:i64,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,special:!fir.box,proc:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,specialbitset:i32,hasparent:i8,noinitializationneeded:i8,nodestructionneeded:i8,nofinalizationneeded:i8,nodefinedassignment:i8,__padding0:!fir.array<3xi8>}>>>,lenvalue:!fir.box,value:i64}>>>>,bounds:!fir.box,value:i64}>>>>,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>>, !fir.shapeshift<1>) -> (!fir.box>>,genre:i8,category:i8,kind:i8,rank:i8,memoryspace:i8,__padding0:!fir.array<3xi8>,offset:i64,characterlen:!fir.type<_QM__fortran_type_infoTvalue{genre:i8,__padding0:!fir.array<7xi8>,value:i64}>,derived:!fir.box,name:!fir.box>>}>>>>,name:!fir.box>>,sizeinbytes:i64,uninstantiated:!fir.box>>,kindparameter:!fir.box>>,lenparameterkind:!fir.box>>,component:!fir.box>>>,procptr:!fir.box>>,offset:i64,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,special:!fir.box,proc:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,specialbitset:i32,hasparent:i8,noinitializationneeded:i8,nodestructionneeded:i8,nofinalizationneeded:i8,nodefinedassignment:i8,__padding0:!fir.array<3xi8>}>>>,lenvalue:!fir.box,value:i64}>>>>,bounds:!fir.box,value:i64}>>>>,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>>, !fir.ref>>,genre:i8,category:i8,kind:i8,rank:i8,memoryspace:i8,__padding0:!fir.array<3xi8>,offset:i64,characterlen:!fir.type<_QM__fortran_type_infoTvalue{genre:i8,__padding0:!fir.array<7xi8>,value:i64}>,derived:!fir.box,name:!fir.box>>}>>>>,name:!fir.box>>,sizeinbytes:i64,uninstantiated:!fir.box>>,kindparameter:!fir.box>>,lenparameterkind:!fir.box>>,component:!fir.box>>>,procptr:!fir.box>>,offset:i64,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,special:!fir.box,proc:!fir.type<_QM__fortran_builtinsT__builtin_c_funptr{__address:i64}>}>>>>,specialbitset:i32,hasparent:i8,noinitializationneeded:i8,nodestructionneeded:i8,nofinalizationneeded:i8,nodefinedassignment:i8,__padding0:!fir.array<3xi8>}>>>,lenvalue:!fir.box,value:i64}>>>>,bounds:!fir.box,value:i64}>>>>,initialization:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>>) %69 = fir.absent !fir.box %c1_i64_26 = arith.constant 1 : i64 %c2_i32 = arith.constant 2 : i32 %70 = fir.convert %c2_i32 : (i32) -> i64 %c0_27 = arith.constant 0 : index %71 = fir.coordinate_of %7, %c0_27 : (!fir.ref>, index) -> !fir.ref fir.store %c1_i64_26 to %71 : !fir.ref %72 = fir.coordinate_of %6, %c0_27 : (!fir.ref>, index) -> !fir.ref fir.store %70 to %72 : !fir.ref %c1_28 = arith.constant 1 : index %73 = fir.coordinate_of %7, %c1_28 : (!fir.ref>, index) -> !fir.ref %74 = fir.coordinate_of %6, %c1_28 : (!fir.ref>, index) -> !fir.ref fir.store %c1_i64_26 to %73 : !fir.ref fir.store %c1_i64_26 to %74 : !fir.ref %75 = fir.embox %7 : (!fir.ref>) -> !fir.box> %76 = fir.embox %6 : (!fir.ref>) -> !fir.box> // CHECK: fir.call @_QMprifPprif_allocate_coarray({{.*}}) : (!fir.box>, !fir.box>, !fir.ref, !fir.ref, !fir.box, !fir.ptr, !fir.ref, !fir.box>, !fir.box>) -> () mif.alloc_coarray %36#0 lcobounds %75 ucobounds %76 errmsg %69 {uniq_name = "_QFEa2"} : (!fir.ref>>, !fir.box>, !fir.box>, !fir.box) -> () %77 = fir.absent !fir.box %c1_i64_29 = arith.constant 1 : i64 %c3_i32 = arith.constant 3 : i32 %78 = fir.convert %c3_i32 : (i32) -> i64 %c4_i32 = arith.constant 4 : i32 %79 = fir.convert %c4_i32 : (i32) -> i64 %c0_30 = arith.constant 0 : index %80 = fir.coordinate_of %5, %c0_30 : (!fir.ref>, index) -> !fir.ref fir.store %78 to %80 : !fir.ref %81 = fir.coordinate_of %4, %c0_30 : (!fir.ref>, index) -> !fir.ref fir.store %79 to %81 : !fir.ref %c5_i32 = arith.constant 5 : i32 %82 = fir.convert %c5_i32 : (i32) -> i64 %c1_31 = arith.constant 1 : index %83 = fir.coordinate_of %5, %c1_31 : (!fir.ref>, index) -> !fir.ref fir.store %c1_i64_29 to %83 : !fir.ref %84 = fir.coordinate_of %4, %c1_31 : (!fir.ref>, index) -> !fir.ref fir.store %82 to %84 : !fir.ref %c2_32 = arith.constant 2 : index %85 = fir.coordinate_of %5, %c2_32 : (!fir.ref>, index) -> !fir.ref %86 = fir.coordinate_of %4, %c2_32 : (!fir.ref>, index) -> !fir.ref fir.store %c1_i64_29 to %85 : !fir.ref fir.store %c1_i64_29 to %86 : !fir.ref %87 = fir.embox %5 : (!fir.ref>) -> !fir.box> %88 = fir.embox %4 : (!fir.ref>) -> !fir.box> // CHECK: fir.call @_QMprifPprif_allocate_coarray({{.*}}) : (!fir.box>, !fir.box>, !fir.ref, !fir.ref, !fir.box, !fir.ptr, !fir.ref, !fir.box>, !fir.box>) -> () mif.alloc_coarray %48#0 lcobounds %87 ucobounds %88 errmsg %77 {uniq_name = "_QFEb2"} : (!fir.ref>>, !fir.box>, !fir.box>, !fir.box) -> () %c100_i32 = arith.constant 100 : i32 %89 = fir.absent !fir.box %c1_i32 = arith.constant 1 : i32 %c1_i32_33 = arith.constant 1 : i32 %c0_i32 = arith.constant 0 : i32 %90 = fir.convert %56#0 : (!fir.ref>>>>) -> !fir.ref> %91 = fir.convert %c100_i32 : (i32) -> i64 fir.call @_FortranAAllocatableInitCharacterForAllocate(%90, %91, %c1_i32, %c1_i32_33, %c0_i32) fastmath : (!fir.ref>, i64, i32, i32, i32) -> () %c1_34 = arith.constant 1 : index %c5_i32_35 = arith.constant 5 : i32 %c0_i32_36 = arith.constant 0 : i32 %92 = fir.convert %56#0 : (!fir.ref>>>>) -> !fir.ref> %93 = fir.convert %c1_34 : (index) -> i64 %94 = fir.convert %c5_i32_35 : (i32) -> i64 fir.call @_FortranAAllocatableSetBounds(%92, %c0_i32_36, %93, %94) fastmath : (!fir.ref>, i32, i64, i64) -> () %c1_i64_37 = arith.constant 1 : i64 %c0_38 = arith.constant 0 : index %95 = fir.coordinate_of %3, %c0_38 : (!fir.ref>, index) -> !fir.ref %96 = fir.coordinate_of %2, %c0_38 : (!fir.ref>, index) -> !fir.ref fir.store %c1_i64_37 to %95 : !fir.ref fir.store %c1_i64_37 to %96 : !fir.ref %97 = fir.embox %3 : (!fir.ref>) -> !fir.box> %98 = fir.embox %2 : (!fir.ref>) -> !fir.box> // CHECK: fir.call @_QMprifPprif_allocate_coarray({{.*}}) : (!fir.box>, !fir.box>, !fir.ref, !fir.ref, !fir.box, !fir.ptr, !fir.ref, !fir.box>, !fir.box>) -> () mif.alloc_coarray %56#0 lcobounds %97 ucobounds %98 errmsg %89 {uniq_name = "_QFEc2"} : (!fir.ref>>>>, !fir.box>, !fir.box>, !fir.box) -> () %99 = fir.absent !fir.box %100 = hlfir.designate %58#0{"z"} : (!fir.ref>>,z:!fir.type<_QFTmy_type2{co:!fir.box>}>}>>) -> !fir.ref>}>> %101 = hlfir.designate %100{"co"} {fortran_attrs = #fir.var_attrs} : (!fir.ref>}>>) -> !fir.ref>> %c1_i64_39 = arith.constant 1 : i64 %c0_40 = arith.constant 0 : index %102 = fir.coordinate_of %1, %c0_40 : (!fir.ref>, index) -> !fir.ref %103 = fir.coordinate_of %0, %c0_40 : (!fir.ref>, index) -> !fir.ref fir.store %c1_i64_39 to %102 : !fir.ref fir.store %c1_i64_39 to %103 : !fir.ref %104 = fir.embox %1 : (!fir.ref>) -> !fir.box> %105 = fir.embox %0 : (!fir.ref>) -> !fir.box> // CHECK: fir.call @_QMprifPprif_allocate_coarray({{.*}}) : (!fir.box>, !fir.box>, !fir.ref, !fir.ref, !fir.box, !fir.ptr, !fir.ref, !fir.box>, !fir.box>) -> () mif.alloc_coarray %101 lcobounds %104 ucobounds %105 errmsg %99 {uniq_name = "_QFEd.z.co"} : (!fir.ref>>, !fir.box>, !fir.box>, !fir.box) -> () %106 = fir.absent !fir.box %107 = fir.absent !fir.ref // CHECK: fir.call @_QMprifPprif_deallocate_coarray({{.*}}) : (!fir.box, !fir.ref, !fir.box>, !fir.box>) -> () mif.dealloc_coarray %36#0 stat %107 errmsg %106 : (!fir.ref>>, !fir.ref, !fir.box) -> () %108 = fir.absent !fir.ref // CHECK: fir.call @_QMprifPprif_deallocate_coarray({{.*}}) : (!fir.box, !fir.ref, !fir.box>, !fir.box>) -> () mif.dealloc_coarray %48#0 stat %108 errmsg %106 : (!fir.ref>>, !fir.ref, !fir.box) -> () %109 = fir.absent !fir.ref // CHECK: fir.call @_QMprifPprif_deallocate_coarray({{.*}}) : (!fir.box, !fir.ref, !fir.box>, !fir.box>) -> () mif.dealloc_coarray %56#0 stat %109 errmsg %106 : (!fir.ref>>>>, !fir.ref, !fir.box) -> () %110 = fir.absent !fir.box %111 = hlfir.designate %58#0{"z"} : (!fir.ref>>,z:!fir.type<_QFTmy_type2{co:!fir.box>}>}>>) -> !fir.ref>}>> %112 = hlfir.designate %111{"co"} {fortran_attrs = #fir.var_attrs} : (!fir.ref>}>>) -> !fir.ref>> %113 = fir.absent !fir.ref // CHECK: fir.call @_QMprifPprif_deallocate_coarray({{.*}}) : (!fir.box, !fir.ref, !fir.box>, !fir.box>) -> () mif.dealloc_coarray %112 stat %113 errmsg %110 : (!fir.ref>>, !fir.ref, !fir.box) -> () // CHECK: fir.call @_QMprifPprif_deallocate_coarray({{.*}}) : (!fir.box, !fir.ref, !fir.box>, !fir.box>) -> () mif.dealloc_coarray %54#0 : (!fir.ref>) -> () // CHECK: fir.call @_QMprifPprif_deallocate_coarray({{.*}}) : (!fir.box, !fir.ref, !fir.box>, !fir.box>) -> () mif.dealloc_coarray %46#0 : (!fir.ref) -> () // CHECK: fir.call @_QMprifPprif_deallocate_coarray({{.*}}) : (!fir.box, !fir.ref, !fir.box>, !fir.box>) -> () mif.dealloc_coarray %34#0 : (!fir.ref) -> () return } } // CHECK: fir.global linkonce_odr @_QMprifE.dt.prif_coarray_handle : !fir.type<_QMprifTprif_coarray_handle{info:!fir.box>}> // CHECK: fir.global linkonce @_QFEa_coarray_handle : !fir.box>}>> // CHECK: fir.global linkonce @_QFEb_coarray_handle : !fir.box>}>> // CHECK: fir.global linkonce @_QFEc_coarray_handle : !fir.box>}>> // CHECK: fir.global linkonce @_QFEa2_coarray_handle : !fir.box>}>> // CHECK: fir.global linkonce @_QFEb2_coarray_handle : !fir.box>}>> // CHECK: fir.global linkonce @_QFEc2_coarray_handle : !fir.box>}>> // CHECK: fir.global linkonce @_QFEd.z.co_coarray_handle : !fir.box>}>>