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