forked from OSchip/llvm-project
[flang] [OpenMP] structural checks for `PARALLEL SECTIONS`
Original-commit: flang-compiler/f18@c18452159d
This commit is contained in:
parent
ffb88549cb
commit
f6273d7194
|
@ -277,7 +277,14 @@ void OmpStructureChecker::Enter(const parser::OpenMPSectionsConstruct &x) {
|
|||
SetContextAllowed(allowed);
|
||||
} break;
|
||||
case parser::OmpSectionsDirective::Directive::ParallelSections: {
|
||||
// TODO
|
||||
PushContext(beginDir.source, OmpDirective::PARALLEL_SECTIONS);
|
||||
OmpClauseSet allowed{OmpClause::DEFAULT, OmpClause::PRIVATE,
|
||||
OmpClause::FIRSTPRIVATE, OmpClause::LASTPRIVATE, OmpClause::SHARED,
|
||||
OmpClause::COPYIN, OmpClause::REDUCTION};
|
||||
SetContextAllowed(allowed);
|
||||
OmpClauseSet allowedOnce{
|
||||
OmpClause::IF, OmpClause::NUM_THREADS, OmpClause::PROC_BIND};
|
||||
SetContextAllowedOnce(allowedOnce);
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -210,6 +210,28 @@
|
|||
!$omp end sections num_threads(4)
|
||||
!$omp end parallel
|
||||
|
||||
! 2.11.2 parallel-sections-clause -> parallel-clause |
|
||||
! sections-clause
|
||||
|
||||
!$omp parallel sections num_threads(4) private(b) lastprivate(d)
|
||||
a = 0.0
|
||||
!$omp section
|
||||
b = 1
|
||||
c = 2
|
||||
!$omp section
|
||||
d = 3
|
||||
!$omp end parallel sections
|
||||
|
||||
!ERROR: At most one NUM_THREADS clause can appear on the PARALLEL SECTIONS directive
|
||||
!$omp parallel sections num_threads(1) num_threads(4)
|
||||
a = 0.0
|
||||
!ERROR: Unmatched END SECTIONS directive
|
||||
!$omp end sections
|
||||
|
||||
!$omp parallel sections
|
||||
!ERROR: NOWAIT clause is not allowed on the END PARALLEL SECTIONS directive
|
||||
!$omp end parallel sections nowait
|
||||
|
||||
! 2.7.3 single-clause -> private-clause |
|
||||
! firstprivate-clause
|
||||
! end-single-clause -> copyprivate-clause |
|
||||
|
|
Loading…
Reference in New Issue