! { dg-do run } ! { dg-options "-fno-inline" } 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)) call abort end do end recursive function fact (x) result (res) !$acc routine integer, intent(in) :: x integer :: res if (x < 1) then res = 1 else res = x * fact (x - 1) end if end function fact