llvm-project/flang/test/Semantics/omp-sync-critical02.f90

54 lines
1.5 KiB
Fortran

! RUN: %python %S/test_errors.py %s %flang -fopenmp
! OpenMP Version 5.0
! 2.17.1 critical construct
! If the hint clause is specified, the critical construct must have a name.
program sample
use omp_lib
integer i, j
!ERROR: Hint clause other than omp_sync_hint_none cannot be specified for an unnamed CRITICAL directive
!$omp critical hint(omp_lock_hint_speculative)
j = j + 1
!$omp end critical
!$omp critical (foo) hint(omp_lock_hint_speculative)
i = i - 1
!$omp end critical (foo)
!ERROR: Hint clause other than omp_sync_hint_none cannot be specified for an unnamed CRITICAL directive
!$omp critical hint(omp_lock_hint_nonspeculative)
j = j + 1
!$omp end critical
!$omp critical (foo) hint(omp_lock_hint_nonspeculative)
i = i - 1
!$omp end critical (foo)
!ERROR: Hint clause other than omp_sync_hint_none cannot be specified for an unnamed CRITICAL directive
!$omp critical hint(omp_lock_hint_contended)
j = j + 1
!$omp end critical
!$omp critical (foo) hint(omp_lock_hint_contended)
i = i - 1
!$omp end critical (foo)
!ERROR: Hint clause other than omp_sync_hint_none cannot be specified for an unnamed CRITICAL directive
!$omp critical hint(omp_lock_hint_uncontended)
j = j + 1
!$omp end critical
!$omp critical (foo) hint(omp_lock_hint_uncontended)
i = i - 1
!$omp end critical (foo)
!$omp critical hint(omp_sync_hint_none)
j = j + 1
!$omp end critical
!$omp critical (foo) hint(omp_sync_hint_none)
i = i - 1
!$omp end critical (foo)
end program sample