program test_intel implicit none type typeA type(typeB), pointer :: ptr end type type typeB integer :: i integer, pointer :: iptr end type type(typeA):: A type(typeB), target:: B A%ptr => B call foo(A) contains subroutine foo(A) type(typeA), intent(in):: A A%ptr%i = 1 allocate(A%ptr%iptr) end subroutine foo end program test_intel