blob: 5037a31a6b4b0110c96bc495709acd79defea732 [file] [log] [blame]
! Test invalid intra-routine parallellism.
module param
integer, parameter :: N = 32
end module param
subroutine gang (a)
use param
!$acc routine gang
integer, intent (inout) :: a(N)
integer :: i
!$acc loop
do i = 1, N
a(i) = a(i) - a(i)
end do
!$acc loop gang
do i = 1, N
a(i) = a(i) - a(i)
end do
!$acc loop worker
do i = 1, N
a(i) = a(i) - a(i)
end do
!$acc loop vector
do i = 1, N
a(i) = a(i) - a(i)
end do
end subroutine gang
subroutine worker (a)
use param
!$acc routine worker
integer, intent (inout) :: a(N)
integer :: i
!$acc loop
do i = 1, N
a(i) = a(i) - a(i)
end do
!$acc loop gang ! { dg-error "disallowed by containing routine" }
do i = 1, N
a(i) = a(i) - a(i)
end do
!$acc loop worker
do i = 1, N
a(i) = a(i) - a(i)
end do
!$acc loop vector
do i = 1, N
a(i) = a(i) - a(i)
end do
end subroutine worker
subroutine vector (a)
use param
!$acc routine vector
integer, intent (inout) :: a(N)
integer :: i
!$acc loop
do i = 1, N
a(i) = a(i) - a(i)
end do
!$acc loop gang ! { dg-error "disallowed by containing routine" }
do i = 1, N
a(i) = a(i) - a(i)
end do
!$acc loop worker ! { dg-error "disallowed by containing routine" }
do i = 1, N
a(i) = a(i) - a(i)
end do
!$acc loop vector
do i = 1, N
a(i) = a(i) - a(i)
end do
end subroutine vector
subroutine seq (a)
use param
!$acc routine seq
integer, intent (inout) :: a(N)
integer :: i
!$acc loop ! { dg-warning "insufficient partitioning" }
do i = 1, N
a(i) = a(i) - a(i)
end do
!$acc loop gang ! { dg-error "disallowed by containing routine" }
do i = 1, N
a(i) = a(i) - a(i)
end do
!$acc loop worker ! { dg-error "disallowed by containing routine" }
do i = 1, N
a(i) = a(i) - a(i)
end do
!$acc loop vector ! { dg-error "disallowed by containing routine" }
do i = 1, N
a(i) = a(i) - a(i)
end do
end subroutine seq