1! { dg-do run }
2! { dg-options "-fno-inline" }
3
4program main
5  implicit none
6  integer, parameter :: n = 10
7  integer :: a(n), i
8  integer, external :: fact
9  !$acc routine (fact)
10  !$acc parallel
11  !$acc loop
12  do i = 1, n
13     a(i) = fact (i)
14  end do
15  !$acc end parallel
16  do i = 1, n
17     if (a(i) .ne. fact(i)) STOP 1
18  end do
19end program main
20
21recursive function fact (x) result (res)
22  implicit none
23  !$acc routine (fact)
24  integer, intent(in) :: x
25  integer :: res
26  if (x < 1) then
27     res = 1
28  else
29     res = x * fact(x - 1)
30  end if
31end function fact
32