brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · b57053e Raw
62 lines · plain
1! RUN: %python %S/../test_errors.py %s %flang -fopenmp2! OpenMP Version 4.53! 2.7.4 workshare Construct4! Checks for OpenMP Parallel constructs enclosed in Workshare constructs5 6module workshare_mod7  interface assignment(=)8    module procedure work_assign9  end interface10 11  contains12    subroutine work_assign(a,b)13      integer, intent(out) :: a14      logical, intent(in) :: b(:)15    end subroutine work_assign16 17    integer function my_func()18      my_func = 1019    end function my_func20 21end module workshare_mod22 23program omp_workshare24  use workshare_mod25 26  integer, parameter :: n = 1027  integer :: i, j, a(10), b(10)28  integer, pointer :: p29  integer, target :: t30  logical :: l(10)31  real :: aa(n,n), bb(n,n), cc(n,n), dd(n,n), ee(n,n), ff(n,n)32 33  !$omp workshare34 35  !$omp parallel36  p => t37  a = l38  !$omp single39  ee = ff40  !$omp end single41  !$omp end parallel42 43  !ERROR: A worksharing region may not be closely nested inside a worksharing, explicit task, taskloop, critical, ordered, atomic, or master region44  !$omp parallel sections45  !$omp section46  aa = my_func()47  !$omp end parallel sections48 49  !$omp parallel do50  do i = 1, 1051    b(i) = my_func() + i52  end do53  !$omp end parallel do54 55  !$omp parallel56  where (dd .lt. 5) dd = aa * my_func()57  !$omp end parallel58 59  !$omp end workshare60 61end program omp_workshare62