41 lines
755 B
Fortran
41 lines
755 B
Fortran
! { dg-do run }
|
|
! { dg-options "-fcheck=recursion" }
|
|
! { dg-shouldfail "Recursion check" }
|
|
!
|
|
! PR fortran/32626
|
|
! Recursion run-time check
|
|
!
|
|
|
|
subroutine NormalFunc()
|
|
end subroutine NormalFunc
|
|
|
|
recursive subroutine valid(x)
|
|
logical :: x
|
|
if(x) call sndValid()
|
|
print *, 'OK'
|
|
end subroutine valid
|
|
|
|
subroutine sndValid()
|
|
call valid(.false.)
|
|
end subroutine sndValid
|
|
|
|
subroutine invalid(x)
|
|
logical :: x
|
|
if(x) call sndInvalid()
|
|
print *, 'BUG'
|
|
call abort()
|
|
end subroutine invalid
|
|
|
|
subroutine sndInvalid()
|
|
call invalid(.false.)
|
|
end subroutine sndInvalid
|
|
|
|
call valid(.true.)
|
|
call valid(.true.)
|
|
call NormalFunc()
|
|
call NormalFunc()
|
|
call invalid(.true.)
|
|
end
|
|
|
|
! { dg-output "Fortran runtime error: Recursive call to nonrecursive procedure 'invalid'" }
|