forked from OSchip/llvm-project
102 lines
1.9 KiB
Fortran
102 lines
1.9 KiB
Fortran
|
! RUN: %S/test_errors.sh %s %t %f18 -fopenacc
|
||
|
|
||
|
! Check OpenACC restruction in branch in and out of some construct
|
||
|
!
|
||
|
|
||
|
program openacc_clause_validity
|
||
|
|
||
|
implicit none
|
||
|
|
||
|
integer :: i
|
||
|
integer :: N = 256
|
||
|
real(8) :: a(256)
|
||
|
|
||
|
!$acc parallel
|
||
|
!$acc loop
|
||
|
do i = 1, N
|
||
|
a(i) = 3.14
|
||
|
!ERROR: RETURN statement is not allowed in a PARALLEL construct
|
||
|
return
|
||
|
end do
|
||
|
!$acc end parallel
|
||
|
|
||
|
!$acc parallel
|
||
|
!$acc loop
|
||
|
do i = 1, N
|
||
|
a(i) = 3.14
|
||
|
if(i == N-1) THEN
|
||
|
!ERROR: EXIT statement is not allowed in a PARALLEL construct
|
||
|
exit
|
||
|
end if
|
||
|
end do
|
||
|
!$acc end parallel
|
||
|
|
||
|
!$acc parallel
|
||
|
!$acc loop
|
||
|
do i = 1, N
|
||
|
a(i) = 3.14
|
||
|
if(i == N-1) THEN
|
||
|
!ERROR: STOP statement is not allowed in a PARALLEL construct
|
||
|
stop 999
|
||
|
end if
|
||
|
end do
|
||
|
!$acc end parallel
|
||
|
|
||
|
!$acc kernels
|
||
|
do i = 1, N
|
||
|
a(i) = 3.14
|
||
|
!ERROR: RETURN statement is not allowed in a KERNELS construct
|
||
|
return
|
||
|
end do
|
||
|
!$acc end kernels
|
||
|
|
||
|
!$acc kernels
|
||
|
do i = 1, N
|
||
|
a(i) = 3.14
|
||
|
if(i == N-1) THEN
|
||
|
!ERROR: EXIT statement is not allowed in a KERNELS construct
|
||
|
exit
|
||
|
end if
|
||
|
end do
|
||
|
!$acc end kernels
|
||
|
|
||
|
!$acc kernels
|
||
|
do i = 1, N
|
||
|
a(i) = 3.14
|
||
|
if(i == N-1) THEN
|
||
|
!ERROR: STOP statement is not allowed in a KERNELS construct
|
||
|
stop 999
|
||
|
end if
|
||
|
end do
|
||
|
!$acc end kernels
|
||
|
|
||
|
!$acc serial
|
||
|
do i = 1, N
|
||
|
a(i) = 3.14
|
||
|
!ERROR: RETURN statement is not allowed in a SERIAL construct
|
||
|
return
|
||
|
end do
|
||
|
!$acc end serial
|
||
|
|
||
|
!$acc serial
|
||
|
do i = 1, N
|
||
|
a(i) = 3.14
|
||
|
if(i == N-1) THEN
|
||
|
!ERROR: EXIT statement is not allowed in a SERIAL construct
|
||
|
exit
|
||
|
end if
|
||
|
end do
|
||
|
!$acc end serial
|
||
|
|
||
|
!$acc serial
|
||
|
do i = 1, N
|
||
|
a(i) = 3.14
|
||
|
if(i == N-1) THEN
|
||
|
!ERROR: STOP statement is not allowed in a SERIAL construct
|
||
|
stop 999
|
||
|
end if
|
||
|
end do
|
||
|
!$acc end serial
|
||
|
|
||
|
end program openacc_clause_validity
|