|  | ! { dg-do run } | 
|  | ! { dg-options "-fno-inline" } | 
|  |  | 
|  | program main | 
|  | implicit none | 
|  | integer, parameter :: n = 10 | 
|  | integer :: a(n), i | 
|  | integer, external :: fact | 
|  | !$acc routine (fact) | 
|  | !$acc parallel | 
|  | !$acc loop | 
|  | do i = 1, n | 
|  | a(i) = fact (i) | 
|  | end do | 
|  | !$acc end parallel | 
|  | do i = 1, n | 
|  | if (a(i) .ne. fact(i)) STOP 1 | 
|  | end do | 
|  | end program main | 
|  |  | 
|  | recursive function fact (x) result (res) | 
|  | implicit none | 
|  | !$acc routine (fact) | 
|  | integer, intent(in) :: x | 
|  | integer :: res | 
|  | if (x < 1) then | 
|  | res = 1 | 
|  | else | 
|  | res = x * fact(x - 1) | 
|  | end if | 
|  | end function fact |