76 lines · plain
1! RUN: bbc -emit-fir %s -o - | FileCheck %s2 3! Tests the generation of fir.type_info operations.4 5module polymorphic_types6 type p17 integer :: a8 integer :: b9 contains10 procedure :: proc1 => proc1_p111 procedure :: aproc12 procedure :: zproc13 end type14 15 type, extends(p1) :: p216 integer :: c17 contains18 procedure :: proc1 => proc1_p219 procedure :: aproc220 end type21 22 type, extends(p2) :: p323 integer :: d24 contains25 procedure :: aproc326 end type27contains28 29 30 subroutine proc1_p1(p)31 class(p1) :: p32 end subroutine33 34 subroutine aproc(p)35 class(p1) :: p36 end subroutine37 38 subroutine zproc(p)39 class(p1) :: p40 end subroutine41 42 subroutine proc1_p2(p)43 class(p2) :: p44 end subroutine45 46 subroutine aproc2(p)47 class(p2) :: p48 end subroutine49 50 subroutine aproc3(p)51 class(p3) :: p52 end subroutine53 54end module55 56! CHECK-LABEL: fir.type_info @_QMpolymorphic_typesTp157! CHECK: fir.dt_entry "aproc", @_QMpolymorphic_typesPaproc58! CHECK: fir.dt_entry "proc1", @_QMpolymorphic_typesPproc1_p159! CHECK: fir.dt_entry "zproc", @_QMpolymorphic_typesPzproc60! CHECK: }61 62! CHECK-LABEL: fir.type_info @_QMpolymorphic_typesTp2 {{.*}}extends !fir.type<_QMpolymorphic_typesTp1{{.*}}>63! CHECK: fir.dt_entry "aproc", @_QMpolymorphic_typesPaproc64! CHECK: fir.dt_entry "proc1", @_QMpolymorphic_typesPproc1_p265! CHECK: fir.dt_entry "zproc", @_QMpolymorphic_typesPzproc66! CHECK: fir.dt_entry "aproc2", @_QMpolymorphic_typesPaproc267! CHECK: }68 69! CHECK-LABEL: fir.type_info @_QMpolymorphic_typesTp3 {{.*}}extends !fir.type<_QMpolymorphic_typesTp2{{.*}}>70! CHECK: fir.dt_entry "aproc", @_QMpolymorphic_typesPaproc71! CHECK: fir.dt_entry "proc1", @_QMpolymorphic_typesPproc1_p272! CHECK: fir.dt_entry "zproc", @_QMpolymorphic_typesPzproc73! CHECK: fir.dt_entry "aproc2", @_QMpolymorphic_typesPaproc274! CHECK: fir.dt_entry "aproc3", @_QMpolymorphic_typesPaproc375! CHECK: }76