blob: 2791675af1b554ef3a13ea3a258d82863ac08384 [file] [log] [blame]
! { dg-do run }
! { dg-options "-fdec-static -frecursive" }
! Contributed by Mark Eggleston <mark.eggleston@codethink.com>
!
! Check automatic variables can be used in equivalence statements.
! Any other variables that do not explicitly have the automatic
! attribute will be given the automatic attribute.
!
! Check that variables are on the stack by incorporating the
! equivalence in a recursive function.
!
program test
integer :: f
f = factorial(5)
if (f.ne.120) stop 2
contains
function factorial(n) result(f)
integer :: f
integer, intent(in) :: n
integer, automatic :: a
integer :: b
equivalence (a,b)
if (loc(a).ne.loc(b)) stop 1
b = n
if (a.eq.1) then
f = 1
else
f = a * factorial(b-1)
end if
end function
end program test