If there is a clause that is allowed on a given directive in a later version of the OpenMP spec, report an error and provide the minimal spec version that allows the clause. The case where a clause is not allowed on a directive at all is already handled elsewhere.
51 lines
1.3 KiB
Fortran
51 lines
1.3 KiB
Fortran
! REQUIRES: openmp_runtime
|
|
|
|
! RUN: %python %S/../test_errors.py %s %flang %openmp_flags -fopenmp-version=50
|
|
|
|
use omp_lib
|
|
implicit none
|
|
integer :: xyz, abc
|
|
real :: reduction_var
|
|
!$omp parallel num_threads(4)
|
|
!$omp single
|
|
print *, "The"
|
|
!$omp taskgroup
|
|
!$omp task
|
|
print *, "almighty"
|
|
!$omp end task
|
|
!$omp task
|
|
print *, "sun"
|
|
!$omp end task
|
|
!$omp end taskgroup
|
|
!$omp end single
|
|
!$omp end parallel
|
|
|
|
!$omp parallel private(xyz)
|
|
!$omp taskgroup allocate(xyz)
|
|
!$omp task
|
|
print *, "The "
|
|
!$omp taskgroup allocate(omp_large_cap_mem_space: abc)
|
|
!$omp task
|
|
print *, "almighty sun"
|
|
!$omp end task
|
|
!$omp end taskgroup
|
|
!$omp end task
|
|
!$omp end taskgroup
|
|
!$omp end parallel
|
|
|
|
!ERROR: PRIVATE clause is not allowed on the TASKGROUP directive
|
|
!$omp taskgroup private(abc)
|
|
!$omp end taskgroup
|
|
|
|
!$omp parallel
|
|
!$omp task
|
|
!$omp taskgroup task_reduction(+ : reduction_var)
|
|
print *, "The "
|
|
!$omp taskgroup task_reduction(.or. : reduction_var) task_reduction(.and. : reduction_var)
|
|
print *, "almighty sun"
|
|
!$omp end taskgroup
|
|
!$omp end taskgroup
|
|
!$omp end task
|
|
!$omp end parallel
|
|
end program
|