1! Test generation of fir.dt_component 2! RUN: bbc -emit-hlfir %s -o - | FileCheck %s 3subroutine test_1(x) 4 integer, save, target :: my_target 5 procedure() :: my_proc 6 type :: sometype 7 integer :: i(-1:8) = 42 8 integer :: j(1:8) 9 integer, allocatable :: alloc(:) 10 integer, pointer :: p => my_target 11 integer, pointer :: p2 => NULL() 12 integer, pointer :: p3 13 procedure(), pointer, nopass :: proc_p => my_proc 14 procedure(), pointer, nopass :: proc_p2 => NULL() 15 procedure(), pointer, nopass :: proc_p3 16 end type 17 type(sometype) :: x 18end subroutine 19! CHECK-LABEL: fir.type_info @_QFtest_1Tsometype 20! CHECK-SAME component_info { 21! CHECK: fir.dt_component "i" lbs [-1] init @_QFtest_1E.di.sometype.i 22! CHECK-NOT: fir.dt_component "j" 23! CHECK: fir.dt_component "p" init @_QFtest_1E.di.sometype.p 24! CHECK: fir.dt_component "p2" init @_QFtest_1E.di.sometype.p2 25! CHECK: fir.dt_component "proc_p" init @_QPmy_proc 26! CHECK: } 27 28subroutine test_nesting(x) 29 type some_sub_type 30 integer :: i = 42 31 end type 32 type sometype2 33 type(some_sub_type) :: nested 34 end type 35 type(sometype2) :: x 36end subroutine 37! CHECK-LABEL: fir.type_info @_QFtest_nestingTsome_sub_type 38! CHECK-SAME component_info { 39! CHECK: fir.dt_component "i" init @_QFtest_nestingE.di.some_sub_type.i 40! CHECK: } 41 42! CHECK: fir.type_info @_QFtest_nestingTsometype2 43! CHECK-NOT: fir.dt_component 44 45 46subroutine data_like(x) 47 type sometype3 48 integer :: i/42/ 49 end type 50 type(sometype3) :: x 51end subroutine 52! CHECK-LABEL: fir.type_info @_QFdata_likeTsometype3 53! CHECK-SAME component_info { 54! CHECK: fir.dt_component "i" init @_QFdata_likeE.di.sometype3.i 55! CHECK: } 56