! { dg-do run } ! Test alternate entry points in a module procedure ! Also check that references to sibling entry points are resolved correctly. module m contains subroutine indirecta (p) call p (3, 4) end subroutine subroutine indirectb (p) call p (5) end subroutine subroutine test1 implicit none call indirecta (foo) call indirectb (bar) end subroutine subroutine foo(a, b) integer a, b logical, save :: was_foo = .false. if ((a .ne. 3) .or. (b .ne. 4)) call abort was_foo = .true. entry bar(a) if (was_foo) then if ((a .ne. 3) .or. (b .ne. 4)) call abort else if (a .ne. 5) call abort end if was_foo = .false. end subroutine subroutine test2 call foo (3, 4) call bar (5) end subroutine end module program p use m call foo (3, 4) call bar (5) call test1 () call test2 () end program ! { dg-final { cleanup-modules "m" } }