forked from OSchip/llvm-project
[Flang][OpenMP] Fix issue in only a single nowait clause can appear on a sections directive.
The OpenMP 5.0 standard restricts nowait clause to appear only once on sections directive. See OpenMP 5.0 - 2.8.1 - point 3 in restrictions. Added a test with fix. Reviewed By: DavidTruby Differential Revision: https://reviews.llvm.org/D88556
This commit is contained in:
parent
abaa8706e9
commit
3291041641
|
@ -127,7 +127,7 @@ void OmpStructureChecker::Enter(const parser::OmpEndSectionsDirective &x) {
|
|||
// 2.7.2 end-sections -> END SECTIONS [nowait-clause]
|
||||
case llvm::omp::Directive::OMPD_sections:
|
||||
SetContextDirectiveEnum(llvm::omp::Directive::OMPD_end_sections);
|
||||
SetContextAllowed(OmpClauseSet{llvm::omp::Clause::OMPC_nowait});
|
||||
SetContextAllowedOnce(OmpClauseSet{llvm::omp::Clause::OMPC_nowait});
|
||||
break;
|
||||
default:
|
||||
// no clauses are allowed
|
||||
|
|
|
@ -261,6 +261,17 @@ use omp_lib
|
|||
d = 2
|
||||
!ERROR: NUM_THREADS clause is not allowed on the END SECTIONS directive
|
||||
!$omp end sections num_threads(4)
|
||||
|
||||
!$omp parallel
|
||||
!$omp sections
|
||||
b = 1
|
||||
!$omp section
|
||||
c = 1
|
||||
d = 2
|
||||
!ERROR: At most one NOWAIT clause can appear on the END SECTIONS directive
|
||||
!$omp end sections nowait nowait
|
||||
!$omp end parallel
|
||||
|
||||
!$omp end parallel
|
||||
|
||||
! 2.11.2 parallel-sections-clause -> parallel-clause |
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
! RUN: %S/test_errors.sh %s %t %f18 -fopenmp
|
||||
! XFAIL: *
|
||||
|
||||
! OpenMP Version 4.5
|
||||
! 2.7.2 sections Construct
|
||||
|
@ -10,7 +9,7 @@ program omp_sections
|
|||
!$omp sections
|
||||
!$omp section
|
||||
print *, "omp section"
|
||||
!ERROR: Only a single nowait clause can appear on a sections directive.
|
||||
!ERROR: At most one NOWAIT clause can appear on the END SECTIONS directive
|
||||
!$omp end sections nowait nowait
|
||||
|
||||
end program omp_sections
|
||||
|
|
Loading…
Reference in New Issue