http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58652
--- Comment #1 from Vladimir Fuka <vladimir.fuka at gmail dot com> --- maybe connected: module gen_lists type list_node class(*),allocatable :: item contains procedure :: move_alloc => list_move_alloc end type contains subroutine list_move_alloc(self,item) class(list_node),intent(inout) :: self class(*),intent(inout),allocatable :: item call move_alloc(item, self%item) end subroutine end module module lists use gen_lists, only: node => list_node end module lists module sexp use lists contains subroutine parse(ast) class(*), allocatable, intent(out) :: ast class(*), allocatable :: expr integer :: ierr allocate(node::ast) select type (ast) type is (node) call ast%move_alloc(expr) end select end subroutine end module starallocatable2.f90:52.28: call ast%move_alloc(expr) 1 Error: Actual argument to 'item' at (1) must have the same declared type