1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
! RUN: %python %S/test_errors.py %s %flang_fc1
module m
contains
attributes(device) subroutine devsub
!ERROR: Statement may not appear in device code
!$cuf kernel do <<< 1, 2 >>>
do k=1,10
end do
end
end
program main
!ERROR: !$CUF KERNEL DO (1) must be followed by a DO construct with tightly nested outer levels of counted DO loops
!$cuf kernel do <<< 1, 2 >>>
do while (.false.)
end do
!ERROR: !$CUF KERNEL DO (1) must be followed by a DO construct with tightly nested outer levels of counted DO loops
!$cuf kernel do <<< 1, 2 >>>
do
exit
end do
!ERROR: !$CUF KERNEL DO (1) must be followed by a DO construct with tightly nested outer levels of counted DO loops
!$cuf kernel do <<< 1, 2 >>>
do concurrent (j=1:10)
end do
!$cuf kernel do <<< 1, 2 >>>
do 1 j=1,10
1 continue ! ok
!$cuf kernel do <<< 1, 2 >>>
do j=1,10
end do ! ok
!$cuf kernel do <<< 1, 2 >>>
do j=1,10
!ERROR: Statement may not appear in device code
!$cuf kernel do <<< 1, 2 >>>
do k=1,10
end do
end do
!ERROR: !$CUF KERNEL DO (-1): loop nesting depth must be positive
!$cuf kernel do (-1) <<< 1, 2 >>>
do j=1,10
end do
!ERROR: !$CUF KERNEL DO (1) must be followed by a DO construct with tightly nested outer levels of counted DO loops
!$cuf kernel do <<< 1, 2 >>>
continue
!ERROR: !$CUF KERNEL DO (2) must be followed by a DO construct with tightly nested outer levels of counted DO loops
!$cuf kernel do (2) <<< 1, 2 >>>
do j=1,10
end do
!ERROR: !$CUF KERNEL DO (2) must be followed by a DO construct with tightly nested outer levels of counted DO loops
!$cuf kernel do (2) <<< 1, 2 >>>
do j=1,10
continue
end do
!ERROR: !$CUF KERNEL DO (2) must be followed by a DO construct with tightly nested outer levels of counted DO loops
!$cuf kernel do (2) <<< 1, 2 >>>
do j=1,10
do k=1,10
end do
continue
end do
!$cuf kernel do <<< 1, 2 >>>
do j = 1, 10
!ERROR: 'foo' may not be called in device code
call foo
!ERROR: 'bar' may not be called in device code
x = bar()
!ERROR: 'ifunc' may not be called in device code
if (ifunc() /= 0) continue
!ERROR: 'ifunc' may not be called in device code
if (ifunc() /= 0) then
!ERROR: 'ifunc' may not be called in device code
else if (ifunc() /= 1) then
end if
end do
end
|