1! RUN: %S/test_errors.sh %s %t %flang_fc1 -fopenmp 2! REQUIRES: shell 3! OpenMP Version 4.5 4! 2.7.1 Loop Construct 5 6program omp 7 integer i, j, k 8 9 !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. 10 !$omp do collapse(3) 11 do i = 0, 10 12 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct 13 cycle 14 do j = 0, 10 15 do k = 0, 10 16 print *, i, j, k 17 end do 18 end do 19 end do 20 !$omp end do 21 22 !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. 23 !$omp do collapse(3) 24 do i = 0, 10 25 do j = 0, 10 26 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct 27 cycle 28 do k = 0, 10 29 print *, i, j, k 30 end do 31 end do 32 end do 33 !$omp end do 34 35 !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. 36 !$omp do collapse(2) 37 do i = 0, 10 38 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct 39 cycle 40 do j = 0, 10 41 do k = 0, 10 42 print *, i, j, k 43 end do 44 end do 45 end do 46 !$omp end do 47 48 49 !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. 50 !$omp do collapse(2) 51 foo: do i = 0, 10 52 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct 53 cycle foo 54 do j = 0, 10 55 do k = 0, 10 56 print *, i, j, k 57 end do 58 end do 59 end do foo 60 !$omp end do 61 62 63 !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. 64 !$omp do collapse(3) 65 do 60 i=1,10 66 do j=1,10 67 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct 68 cycle 69 do k=1,10 70 print *,i 71 end do 72 end do 73 60 continue 74 !$omp end do 75 76 !$omp do collapse(3) 77 foo: do i = 0, 10 78 foo1: do j = 0, 10 79 foo2: do k = 0, 10 80 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct 81 cycle foo 82 print *, i, j, k 83 end do foo2 84 end do foo1 85 end do foo 86 !$omp end do 87 88 !$omp do collapse(3) 89 foo: do i = 0, 10 90 foo1: do j = 0, 10 91 foo2: do k = 0, 10 92 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct 93 cycle foo1 94 print *, i, j, k 95 end do foo2 96 end do foo1 97 end do foo 98 !$omp end do 99 100 101 !$omp do collapse(2) 102 foo: do i = 0, 10 103 foo1: do j = 0, 10 104 foo2: do k = 0, 10 105 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct 106 cycle foo 107 print *, i, j, k 108 end do foo2 109 end do foo1 110 end do foo 111 !$omp end do 112 113 114 !$omp do collapse(2) 115 foo: do i = 0, 10 116 foo1: do j = 0, 10 117 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct 118 cycle foo 119 foo2: do k = 0, 10 120 print *, i, j, k 121 end do foo2 122 end do foo1 123 end do foo 124 !$omp end do 125 126 !$omp do ordered(2) 127 foo: do i = 0, 10 128 foo1: do j = 0, 10 129 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct 130 cycle foo 131 !ERROR: A worksharing region may not be closely nested inside a worksharing, explicit task, taskloop, critical, ordered, atomic, or master region 132 !$omp do collapse(1) 133 foo2: do k = 0, 10 134 print *, i, j, k 135 end do foo2 136 !$omp end do 137 end do foo1 138 end do foo 139 !$omp end do 140 141 !$omp parallel 142 !$omp do collapse(2) 143 foo: do i = 0, 10 144 foo1: do j = 0, 10 145 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct 146 cycle foo 147 !$omp parallel 148 !$omp do collapse(2) 149 foo2: do k = 0, 10 150 foo3: do l = 0, 10 151 print *, i, j, k, l 152 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct 153 cycle foo2 154 end do foo3 155 end do foo2 156 !$omp end do 157 !$omp end parallel 158 end do foo1 159 end do foo 160 !$omp end do 161 !$omp end parallel 162 163 !$omp parallel 164 !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. 165 !$omp parallel do ordered(3) collapse(2) 166 foo: do i = 0, 10 167 foo1: do j = 0, 10 168 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct 169 cycle foo 170 !$omp parallel 171 !$omp parallel do collapse(2) 172 foo2: do k = 0, 10 173 foo3: do l = 0, 10 174 print *, i, j, k, l 175 !ERROR: CYCLE statement to non-innermost associated loop of an OpenMP DO construct 176 cycle foo2 177 end do foo3 178 end do foo2 179 !$omp end parallel do 180 !$omp end parallel 181 end do foo1 182 end do foo 183!$omp end parallel do 184!$omp end parallel 185 186end program omp 187