170 lines · plain
1! RUN: %python %S/../test_errors.py %s %flang -fopenmp2! OpenMP Version 4.53! 2.7.1 Loop Construct4 5program omp6 integer i, j, k7 logical cond(10,10,10)8 cond = .false.9 10 !ERROR: The value of the parameter in the COLLAPSE or ORDERED clause must not be larger than the number of nested loops following the construct.11 !$omp do collapse(3)12 do i = 0, 1013 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct14 if (i .lt. 1) cycle15 do j = 0, 1016 do k = 0, 1017 print *, i, j, k18 end do19 end do20 end do21 !$omp end do22 23 !ERROR: The value of the parameter in the COLLAPSE or ORDERED clause must not be larger than the number of nested loops following the construct.24 !$omp do collapse(3)25 do i = 0, 1026 do j = 0, 1027 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct28 if (i .lt. 1) cycle29 do k = 0, 1030 print *, i, j, k31 end do32 end do33 end do34 !$omp end do35 36 !ERROR: The value of the parameter in the COLLAPSE or ORDERED clause must not be larger than the number of nested loops following the construct.37 !$omp do collapse(2)38 do i = 0, 1039 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct40 if (i .lt. 1) cycle41 do j = 0, 1042 do k = 0, 1043 print *, i, j, k44 end do45 end do46 end do47 !$omp end do48 49 50 !ERROR: The value of the parameter in the COLLAPSE or ORDERED clause must not be larger than the number of nested loops following the construct.51 !$omp do collapse(2)52 foo: do i = 0, 1053 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct54 if (i .lt. 1) cycle foo55 do j = 0, 1056 do k = 0, 1057 print *, i, j, k58 end do59 end do60 end do foo61 !$omp end do62 63 64 !ERROR: The value of the parameter in the COLLAPSE or ORDERED clause must not be larger than the number of nested loops following the construct.65 !$omp do collapse(3)66 do 60 i=2,200,267 do j=1,1068 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct69 if(i==100) cycle70 do k=1,1071 print *,i72 end do73 end do74 60 continue75 !$omp end do76 77 !$omp do collapse(3)78 foo: do i = 0, 1079 foo1: do j = 0, 1080 foo2: do k = 0, 1081 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct82 if (k .lt. 1) cycle foo83 print *, i, j, k84 end do foo285 end do foo186 end do foo87 !$omp end do88 89 !$omp do collapse(3)90 foo: do i = 0, 1091 foo1: do j = 0, 1092 foo2: do k = 0, 1093 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct94 if (k .lt. 1) cycle foo195 print *, i, j, k96 end do foo297 end do foo198 end do foo99 !$omp end do100 101 102 !$omp do collapse(2)103 foo: do i = 0, 10104 foo1: do j = 0, 10105 foo2: do k = 0, 10106 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct107 if (k .lt. 1) cycle foo108 print *, i, j, k109 end do foo2110 end do foo1111 end do foo112 !$omp end do113 114 115 !$omp do ordered(2)116 foo: do i = 0, 10117 foo1: do j = 0, 10118 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct119 if (k .lt. 1) cycle foo120 foo2: do k = 0, 10121 print *, i, j, k122 end do foo2123 end do foo1124 end do foo125 !$omp end do126 127 !ERROR: The value of the parameter in the COLLAPSE or ORDERED clause must not be larger than the number of nested loops following the construct.128 !$omp do collapse(2) ordered(3)129 foo: do i = 0, 10130 foo1: do j = 0, 10131 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct132 if (k .lt. 1) cycle foo133 foo2: do k = 0, 10134 print *, i, j, k135 end do foo2136 end do foo1137 end do foo138 !$omp end do139 140 !$omp do collapse(3)141 loopk: do k=1,10142 loopj: do j=1,10143 loopi: do i=1,10144 ifi : if (.true.) then145 !ERROR: EXIT statement terminates associated loop of an OpenMP DO construct146 if (cond(i,j,k)) exit147 if (cond(i,j,k)) exit ifi148 !ERROR: EXIT statement terminates associated loop of an OpenMP DO construct149 if (cond(i,j,k)) exit loopi150 !ERROR: EXIT statement terminates associated loop of an OpenMP DO construct151 if (cond(i,j,k)) exit loopj152 end if ifi153 end do loopi154 end do loopj155 end do loopk156 !$omp end do157 158 !$omp do collapse(2)159 loopk: do k=1,10160 loopj: do j=1,10161 do i=1,10162 end do163 !ERROR: EXIT statement terminates associated loop of an OpenMP DO construct164 if (cond(i,j,k)) exit165 end do loopj166 end do loopk167 !$omp end do168 169end program omp170