147 lines · plain
1! RUN: %python %S/../test_errors.py %s %flang -fopenmp2! OpenMP Version 5.13! Check OpenMP construct validity for the following directives:4! 2.19.9 Ordered Construct5 6subroutine sub1()7 integer :: i, j, N = 108 real :: arrayA(10), arrayB(10)9 real, external :: foo, bar10 11 !$omp ordered12 arrayA(i) = foo(i)13 !$omp end ordered14 15 !$omp ordered threads16 arrayA(i) = foo(i)17 !$omp end ordered18 19 !$omp ordered simd20 arrayA(i) = foo(i)21 !$omp end ordered22 23 !$omp sections24 do i = 1, N25 !$omp ordered26 arrayA(i) = foo(i)27 !$omp end ordered28 end do29 !$omp end sections30 31 !$omp do ordered32 do i = 1, N33 arrayB(i) = bar(i)34 !$omp ordered35 arrayA(i) = foo(i)36 !$omp end ordered37 end do38 !$omp end do39 40 !$omp sections41 do i = 1, N42 !ERROR: An ORDERED directive with SIMD clause must be closely nested in a SIMD or worksharing-loop SIMD region43 !$omp ordered simd44 arrayA(i) = foo(i)45 !$omp end ordered46 end do47 !$omp end sections48 49 !$omp do ordered50 do i = 1, N51 !$omp parallel52 do j = 1, N53 !ERROR: An ORDERED directive without the DEPEND clause must be closely nested in a SIMD, worksharing-loop, or worksharing-loop SIMD region54 !$omp ordered55 arrayA(i) = foo(i)56 !$omp end ordered57 end do58 !$omp end parallel59 end do60 !$omp end do61 62 !$omp do ordered63 do i = 1, N64 !$omp target parallel65 do j = 1, N66 !ERROR: An ORDERED directive without the DEPEND clause must be closely nested in a SIMD, worksharing-loop, or worksharing-loop SIMD region67 !$omp ordered68 arrayA(i) = foo(i)69 !$omp end ordered70 end do71 !$omp end target parallel72 end do73 !$omp end do74 75 !$omp do76 do i = 1, N77 !ERROR: An ORDERED directive without the DEPEND clause must be closely nested in a worksharing-loop (or worksharing-loop SIMD) region with ORDERED clause without the parameter78 !$omp ordered79 arrayA(i) = foo(i)80 !$omp end ordered81 end do82 !$omp end do83 84 !$omp do85 do i = 1, N86 !ERROR: An ORDERED directive without the DEPEND clause must be closely nested in a worksharing-loop (or worksharing-loop SIMD) region with ORDERED clause without the parameter87 !$omp ordered threads88 arrayA(i) = foo(i)89 !$omp end ordered90 end do91 !$omp end do92 93 !$omp do ordered(1)94 do i = 1, N95 !ERROR: An ORDERED directive without the DEPEND clause must be closely nested in a worksharing-loop (or worksharing-loop SIMD) region with ORDERED clause without the parameter96 !$omp ordered97 arrayA(i) = foo(i)98 !$omp end ordered99 end do100 !$omp end do101 102 !$omp do ordered(1)103 do i = 1, N104 !ERROR: An ORDERED directive without the DEPEND clause must be closely nested in a worksharing-loop (or worksharing-loop SIMD) region with ORDERED clause without the parameter105 !$omp ordered threads106 arrayA(i) = foo(i)107 !$omp end ordered108 end do109 !$omp end do110 111 !$omp parallel do ordered(1)112 do i = 1, N113 !ERROR: An ORDERED directive without the DEPEND clause must be closely nested in a worksharing-loop (or worksharing-loop SIMD) region with ORDERED clause without the parameter114 !$omp ordered115 arrayA(i) = foo(i)116 !$omp end ordered117 end do118 !$omp end parallel do119 120 !$omp parallel do ordered(1)121 do i = 1, N122 !ERROR: An ORDERED directive without the DEPEND clause must be closely nested in a worksharing-loop (or worksharing-loop SIMD) region with ORDERED clause without the parameter123 !$omp ordered threads124 arrayA(i) = foo(i)125 !$omp end ordered126 end do127 !$omp end parallel do128 129 !$omp target parallel do ordered(1)130 do i = 1, N131 !ERROR: An ORDERED directive without the DEPEND clause must be closely nested in a worksharing-loop (or worksharing-loop SIMD) region with ORDERED clause without the parameter132 !$omp ordered133 arrayA(i) = foo(i)134 !$omp end ordered135 end do136 !$omp end target parallel do137 138 !$omp target parallel do ordered(1)139 do i = 1, N140 !ERROR: An ORDERED directive without the DEPEND clause must be closely nested in a worksharing-loop (or worksharing-loop SIMD) region with ORDERED clause without the parameter141 !$omp ordered threads142 arrayA(i) = foo(i)143 !$omp end ordered144 end do145 !$omp end target parallel do146end147