d4de7e32ef
This patch adds support for the 'strict' modifier on grainsize/num_tasks clauses, an OpenMP 5.1 feature supported in C/C++ since commit r12-3066-g3bc75533d1f87f0617be6c1af98804f9127ec637 gcc/fortran/ChangeLog: * dump-parse-tree.c (show_omp_clauses): Handle 'strict' modifier on grainsize/num_tasks * gfortran.h (gfc_omp_clauses): Add grainsize_strict and num_tasks_strict. * trans-openmp.c (gfc_trans_omp_clauses, gfc_split_omp_clauses): Handle 'strict' modifier on grainsize/num_tasks. * openmp.c (gfc_match_omp_clauses): Likewise. libgomp/ChangeLog: * testsuite/libgomp.fortran/taskloop-4-a.f90: New test. * testsuite/libgomp.fortran/taskloop-4.f90: New test. * testsuite/libgomp.fortran/taskloop-5-a.f90: New test. * testsuite/libgomp.fortran/taskloop-5.f90: New test.
42 lines
812 B
Fortran
42 lines
812 B
Fortran
! { dg-do run }
|
|
! { dg-options "-O2" }
|
|
! { dg-additional-sources taskloop-4-a.f90 }
|
|
|
|
module m_taskloop4
|
|
implicit none (type, external)
|
|
integer :: v, u(0:63)
|
|
|
|
contains
|
|
integer function test (a, b, c, d, fn, num_tasks, min_iters, max_iters)
|
|
integer, value :: a, b, c, d
|
|
interface
|
|
subroutine fn (n1, n2, n3, n4)
|
|
integer, value :: n1, n2, n3, n4
|
|
end
|
|
end interface
|
|
integer :: num_tasks, min_iters, max_iters
|
|
integer :: i, t
|
|
|
|
t = 0
|
|
u = 0
|
|
v = 0
|
|
call fn (a, b, c, d)
|
|
min_iters = 0
|
|
max_iters = 0
|
|
num_tasks = v
|
|
if (v /= 0) then
|
|
min_iters = u(0)
|
|
max_iters = u(0)
|
|
t = u(0)
|
|
do i = 1, v - 1
|
|
if (min_iters > u(i)) &
|
|
min_iters = u(i)
|
|
if (max_iters < u(i)) &
|
|
max_iters = u(i)
|
|
t = t + u(i)
|
|
end do
|
|
end if
|
|
test = t
|
|
end
|
|
end module
|