diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/goacc/routine-5.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/goacc/routine-5.f90 | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/goacc/routine-5.f90 b/gcc/testsuite/gfortran.dg/goacc/routine-5.f90 new file mode 100644 index 00000000000..68c51496866 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/goacc/routine-5.f90 @@ -0,0 +1,109 @@ +! Test invalid intra-routine parallellism. + +module param + integer, parameter :: N = 32 +end module param + +subroutine gang (a) + !$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) + !$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) + !$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) + !$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 |