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