1! { dg-do compile }
2! Test the fix for the fourth problem in PR40011, where the
3! entries were not resolved, resulting in a segfault.
4!
5! Contributed by Dominique d'Humieres <dominiq@lps.ens.fr>
6!
7program test
8interface
9  function bad_stuff(n)
10    integer :: bad_stuff (2)
11    integer :: n(2)
12  end function bad_stuff
13   recursive function rec_stuff(n) result (tmp)
14    integer :: n(2), tmp(2)
15  end function rec_stuff
16end interface
17   integer :: res(2)
18  res = bad_stuff((/-19,-30/))
19
20end program test
21
22  recursive function bad_stuff(n)
23    integer :: bad_stuff (2)
24    integer :: n(2), tmp(2), ent = 0, sent = 0
25    save ent, sent
26    ent = -1
27   entry rec_stuff(n) result (tmp)
28    if (ent == -1) then
29      sent = ent
30      ent = 0
31    end if
32    ent = ent + 1
33    tmp = 1
34    if(maxval (n) < 5) then
35      tmp = tmp + rec_stuff (n+1)
36      ent = ent - 1
37    endif
38    if (ent == 1) then
39      if (sent == -1) then
40        bad_stuff = tmp + bad_stuff (1)
41      end if
42      ent = 0
43      sent = 0
44    end if
45  end function bad_stuff
46