! { dg-do compile } ! { dg-options "-fdump-tree-original" } ! ! Fortran/PR71047 ! module m implicit none type, abstract :: c_abstr integer :: i = 0 end type c_abstr type, extends(c_abstr) :: t_a class(c_abstr), allocatable :: f end type t_a type, extends(c_abstr) :: t_b end type t_b contains subroutine set(y,x) class(c_abstr), intent(in) :: x type(t_a), intent(out) :: y allocate( y%f , source=x ) end subroutine set end module m program p use m implicit none type(t_a) :: res type(t_b) :: var call set( res , var ) write(*,*) res%i end program p ! ! Check to ensure the vtable is actually initialized. ! ! { dg-final { scan-tree-dump "t_a\\.\\d+\\.f\\._vptr =" "original" } } !