! 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) STOP 1
end