1! { dg-do run }
2! { dg-options "-std=gnu" }
3!
4! Tests the fix for PR30236, which was due to alternate returns
5! in generic interfaces causing a segfault.  They now work
6! correctly.
7!
8! Contributed by Brooks Moses <brooks@gcc.gnu.org>
9!
10module arswitch
11  implicit none
12  interface gen
13    module procedure with
14    module procedure without
15  end interface
16contains
17  subroutine with(i,*)
18    integer i
19    if (i>0) then
20      i = -1
21      return 1
22    else
23      i = -2
24      return
25    end if
26  end subroutine
27  subroutine without()
28    return
29  end subroutine
30end module
31
32program test
33  use arswitch
34  implicit none
35  integer :: i = 0
36  call gen (i, *10)
37  if (i /= -2) call abort ()
38  i = 2
39  call gen (i, *20)
40 10 continue
41  call abort()
42 20 continue
43  if (i /= -1) call abort ()
44end
45