125 lines · plain
1! RUN: %python %S/../test_errors.py %s %flang -fopenmp2! Check OpenMP clause validity for the following directives:3! 2.10 Device constructs4 5subroutine f6 integer :: i7 !WARNING: `DISTRIBUTE` must be dynamically enclosed in a `TEAMS` region.8 !$omp distribute9 do i = 1, 10010 print *, "hello"11 end do12end subroutine13program main14 15 real(8) :: arrayA(256), arrayB(256)16 integer :: N17 18 arrayA = 1.414d019 arrayB = 3.14d020 N = 25621 22 !$omp task23 !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region.24 !$omp distribute 25 do i = 1, N26 a = 3.14d027 enddo28 !$omp end distribute29 !$omp end task30 31 !$omp teams32 do i = 1, N33 !ERROR: Only `DISTRIBUTE`, `PARALLEL`, or `LOOP` regions are allowed to be strictly nested inside `TEAMS` region.34 !$omp task35 do k = 1, N36 a = 3.14d037 enddo38 !$omp end task39 enddo40 !$omp end teams41 42 !$omp teams43 do i = 1, N44 !$omp parallel45 do k = 1, N46 a = 3.14d047 enddo48 !$omp end parallel49 enddo50 !$omp end teams51 52 !$omp parallel53 !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region.54 !$omp distribute 55 do i = 1, N56 a = 3.14d057 enddo58 !$omp end distribute59 !$omp end parallel60 61 !$omp teams62 !ERROR: Only `DISTRIBUTE`, `PARALLEL`, or `LOOP` regions are allowed to be strictly nested inside `TEAMS` region.63 !$omp target64 !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region.65 !$omp distribute 66 do i = 1, 1067 j = j + 168 end do69 !$omp end distribute70 !$omp end target71 !$omp end teams72 73 !$omp teams 74 !$omp parallel75 do k = 1,1076 print *, "hello"77 end do78 !$omp end parallel79 !$omp distribute firstprivate(a)80 do i = 1, 1081 j = j + 182 end do83 !$omp end distribute84 !$omp end teams85 86 !$omp target teams87 !$omp distribute88 do i = 1, 1089 end do90 !$omp end distribute91 !$omp end target teams92 93 !$omp teams 94 !ERROR: Only `DISTRIBUTE`, `PARALLEL`, or `LOOP` regions are allowed to be strictly nested inside `TEAMS` region.95 !$omp task96 do k = 1,1097 print *, "hello"98 end do99 !$omp end task100 !$omp distribute firstprivate(a)101 do i = 1, 10102 j = j + 1103 end do104 !$omp end distribute105 !$omp end teams106 107 !$omp task 108 !$omp parallel109 do k = 1,10110 print *, "hello"111 end do112 !$omp end parallel113 !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region.114 !$omp distribute firstprivate(a)115 do i = 1, 10116 j = j + 1117 end do118 !$omp end distribute119 !$omp end task120 121 !$omp teams122 call foo123 !$omp end teams124end program main125