! { dg-do compile }
! Test the fix for the fourth problem in PR40011, where the
! entries were not resolved, resulting in a segfault.
!
! Contributed by Dominique d'Humieres <dominiq@lps.ens.fr>
!
program test
interface
  function bad_stuff(n)
    integer :: bad_stuff (2)
    integer :: n(2)
  end function bad_stuff
   recursive function rec_stuff(n) result (tmp)
    integer :: n(2), tmp(2)
  end function rec_stuff
end interface
   integer :: res(2)
  res = bad_stuff((/-19,-30/))

end program test

  recursive function bad_stuff(n)
    integer :: bad_stuff (2)
    integer :: n(2), tmp(2), ent = 0, sent = 0
    save ent, sent
    ent = -1
   entry rec_stuff(n) result (tmp)
    if (ent == -1) then
      sent = ent
      ent = 0
    end if
    ent = ent + 1
    tmp = 1
    if(maxval (n) < 5) then
      tmp = tmp + rec_stuff (n+1)
      ent = ent - 1
    endif
    if (ent == 1) then
      if (sent == -1) then
        bad_stuff = tmp + bad_stuff (1)
      end if
      ent = 0
      sent = 0
    end if
  end function bad_stuff
