104 lines · plain
1! RUN: %python %S/../test_errors.py %s %flang -fopenacc2 3! Check OpenACC canonalization validity for the construct defined below:4! 2.9 Loop5! 2.11 Parallel Loop6! 2.11 Kernels Loop7! 2.11 Serial Loop8 9program openacc_clause_validity10 11 implicit none12 13 integer :: i, j14 integer :: N = 25615 real(8) :: a(256)16 real(8) :: aa(256, 256)17 18 i = 019 20 !ERROR: DO loop after the LOOP directive must have loop control21 !$acc loop22 do23 end do24 25 !$acc parallel loop26 do i = 1, N27 a(i) = 3.1428 end do29 30 !$acc kernels loop31 do i = 1, N32 a(i) = 3.1433 end do34 35 !$acc serial loop36 do i = 1, N37 a(i) = 3.1438 end do39 40 !$acc parallel loop41 do i = 1, N42 a(i) = 3.1443 end do44 !$acc end parallel loop45 46 !$acc kernels loop47 do i = 1, N48 a(i) = 3.1449 end do50 !$acc end kernels loop51 52 !$acc serial loop53 do i = 1, N54 a(i) = 3.1455 end do56 !$acc end serial loop57 58 !ERROR: DO loop after the PARALLEL LOOP directive must have loop control59 !$acc parallel loop60 do61 end do62 63 !ERROR: DO loop after the KERNELS LOOP directive must have loop control64 !$acc kernels loop65 do66 end do67 68 !ERROR: DO loop after the SERIAL LOOP directive must have loop control69 !$acc serial loop70 do71 end do72 73 !$acc parallel74 !ERROR: The loop construct with the TILE clause must be followed by 2 tightly-nested loops75 !$acc loop tile(2, 2)76 do i = 1, N77 a(i) = 3.1478 end do79 !$acc end parallel80 81 !ERROR: The loop construct with the TILE clause must be followed by 2 tightly-nested loops82 !$acc parallel loop tile(2, 2)83 do i = 1, N84 a(i) = 3.1485 end do86 87 !$acc parallel88 !ERROR: TILE and COLLAPSE clause may not appear on loop construct associated with DO CONCURRENT89 !$acc loop collapse(2)90 do concurrent (i = 1:N, j = 1:N)91 aa(i, j) = 3.1492 end do93 !$acc end parallel94 95 !$acc parallel96 !ERROR: TILE and COLLAPSE clause may not appear on loop construct associated with DO CONCURRENT97 !$acc loop tile(2, 2)98 do concurrent (i = 1:N, j = 1:N)99 aa(i, j) = 3.14100 end do101 !$acc end parallel102 103end program openacc_clause_validity104