blob: db8187e5903c7fba900ee6623ea6065d74307f7c [file] [log] [blame]
! See also "../../c-c++-common/goacc/loop-2-parallel.c".
program test
implicit none
integer :: i, j
!$acc parallel
!$acc loop auto
DO i = 1,10
ENDDO
!$acc loop gang
DO i = 1,10
ENDDO
!$acc loop gang(static:5)
DO i = 1,10
ENDDO
!$acc loop gang(static:*)
DO i = 1,10
ENDDO
!$acc loop gang
DO i = 1,10
!$acc loop vector
DO j = 1,10
ENDDO
!$acc loop worker
DO j = 1,10
ENDDO
!$acc loop gang ! { dg-error "inner loop uses same OpenACC parallelism as containing loop" }
DO j = 1,10
ENDDO
ENDDO
!$acc loop seq gang ! { dg-error "'seq' overrides other OpenACC loop specifiers" }
DO i = 1,10
ENDDO
!$acc loop worker
DO i = 1,10
ENDDO
!$acc loop worker
DO i = 1,10
!$acc loop vector
DO j = 1,10
ENDDO
!$acc loop worker ! { dg-error "inner loop uses same OpenACC parallelism as containing loop" }
DO j = 1,10
ENDDO
!$acc loop gang ! { dg-error "incorrectly nested OpenACC loop parallelism" }
DO j = 1,10
ENDDO
ENDDO
!$acc loop seq worker ! { dg-error "'seq' overrides other OpenACC loop specifiers" }
DO i = 1,10
ENDDO
!$acc loop gang worker
DO i = 1,10
ENDDO
!$acc loop vector
DO i = 1,10
ENDDO
!$acc loop vector
DO i = 1,10
!$acc loop vector ! { dg-error "inner loop uses same OpenACC parallelism as containing loop" }
DO j = 1,10
ENDDO
!$acc loop worker ! { dg-error "incorrectly nested OpenACC loop parallelism" }
DO j = 1,10
ENDDO
!$acc loop gang ! { dg-error "incorrectly nested OpenACC loop parallelism" }
DO j = 1,10
ENDDO
ENDDO
!$acc loop seq vector ! { dg-error "'seq' overrides other OpenACC loop specifiers" }
DO i = 1,10
ENDDO
!$acc loop gang vector
DO i = 1,10
ENDDO
!$acc loop worker vector
DO i = 1,10
ENDDO
!$acc loop auto
DO i = 1,10
ENDDO
!$acc loop seq auto ! { dg-error "'seq' overrides other OpenACC loop specifiers" }
DO i = 1,10
ENDDO
!$acc loop gang auto ! { dg-error "'auto' conflicts with other OpenACC loop specifiers" }
DO i = 1,10
ENDDO
!$acc loop worker auto ! { dg-error "'auto' conflicts with other OpenACC loop specifiers" }
DO i = 1,10
ENDDO
!$acc loop vector auto ! { dg-error "'auto' conflicts with other OpenACC loop specifiers" }
DO i = 1,10
ENDDO
!$acc end parallel
!$acc parallel loop auto
DO i = 1,10
ENDDO
!$acc parallel loop gang
DO i = 1,10
ENDDO
!$acc parallel loop gang(static:5)
DO i = 1,10
ENDDO
!$acc parallel loop gang(static:*)
DO i = 1,10
ENDDO
!$acc parallel loop seq gang ! { dg-error "'seq' overrides other OpenACC loop specifiers" }
DO i = 1,10
ENDDO
!$acc parallel loop worker
DO i = 1,10
ENDDO
!$acc parallel loop seq worker ! { dg-error "'seq' overrides other OpenACC loop specifiers" }
DO i = 1,10
ENDDO
!$acc parallel loop gang worker
DO i = 1,10
ENDDO
!$acc parallel loop vector
DO i = 1,10
ENDDO
!$acc parallel loop seq vector ! { dg-error "'seq' overrides other OpenACC loop specifiers" }
DO i = 1,10
ENDDO
!$acc parallel loop gang vector
DO i = 1,10
ENDDO
!$acc parallel loop worker vector
DO i = 1,10
ENDDO
!$acc parallel loop auto
DO i = 1,10
ENDDO
!$acc parallel loop seq auto ! { dg-error "'seq' overrides other OpenACC loop specifiers" }
DO i = 1,10
ENDDO
!$acc parallel loop gang auto ! { dg-error "'auto' conflicts with other OpenACC loop specifiers" }
DO i = 1,10
ENDDO
!$acc parallel loop worker auto ! { dg-error "'auto' conflicts with other OpenACC loop specifiers" }
DO i = 1,10
ENDDO
!$acc parallel loop vector auto ! { dg-error "'auto' conflicts with other OpenACC loop specifiers" }
DO i = 1,10
ENDDO
end