The following program generates a run-time error at line 20, which simply assigns the value 0 to the argument i in subroutine s2. It seems to work on other compilers.
MODULE m
IMPLICIT NONE
TYPE t1
REAL :: r
END TYPE t1
TYPE(t1), POINTER, PUBLIC :: x(:)
CONTAINS
!
SUBROUTINE s1 (a,i)
INTEGER :: i
TYPE(t1), POINTER :: a(:)
i=0
CALL s2 (a,i)
RETURN
END SUBROUTINE s1
!
SUBROUTINE s2 (a,i)
INTEGER :: i
TYPE(t1), POINTER :: a(:)
i=0
RETURN
END SUBROUTINE s2
END MODULE m
PROGRAM p
USE m
IMPLICIT NONE
INTEGER :: i
!
CALL s1 (x,i)
END PROGRAM p