! This can fail because BB is not resolved correctly. module M1 INTEGER p CONTAINS subroutine AA () implicit NONE p = BB () CONTAINS subroutine AA_1 () implicit NONE integer :: i i = BB () end subroutine function BB() integer :: BB BB = 1 end function end subroutine function BB() implicit NONE integer :: BB BB = 2 end function end module program P1 USE M1 implicit none p = 0 call AA () if (p /= 1) call abort end