PR c/29467
[official-gcc.git] / gcc / testsuite / gfortran.dg / altreturn_3.f90
blobc445159872f3356cc0221b8b32bc46b4dc1ebd00
1 ! { dg-do run }
2 ! { dg-options "-std=gnu" }
4 ! Tests the fix for PR30236, which was due to alternate returns
5 ! in generic interfaces causing a segfault. They now work
6 ! correctly.
8 ! Contributed by Brooks Moses <brooks@gcc.gnu.org>
10 module arswitch
11 implicit none
12 interface gen
13 module procedure with
14 module procedure without
15 end interface
16 contains
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
30 end module
32 program 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 ()
44 end