Update parsing of these two clauses and add semantic checks for them. Simplify some code in IsReductionAllowedForType and CheckReductionOperator.
53 lines
1.4 KiB
Fortran
53 lines
1.4 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 "
|
|
!ERROR: The type of 'reduction_var' is incompatible with the reduction operator.
|
|
!ERROR: The type of 'reduction_var' is incompatible with the reduction operator.
|
|
!$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
|