brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.8 KiB · 5143dff Raw
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