[flang-commits] [flang] [llvm] [Flang][OpenMP][Sema] Adding parsing and semantic support for scan directive. (PR #102792)
Kiran Chandramohan via flang-commits
flang-commits at lists.llvm.org
Tue Nov 12 15:31:07 PST 2024
================
@@ -1383,19 +1437,32 @@ void OmpStructureChecker::Leave(const parser::OpenMPAllocatorsConstruct &x) {
dirContext_.pop_back();
}
+void OmpStructureChecker::CheckScan(
+ const parser::OpenMPSimpleStandaloneConstruct &x) {
+ if (std::get<parser::OmpClauseList>(x.t).v.size() != 1) {
+ context_.Say(x.source,
+ "Exactly one of EXCLUSIVE or INCLUSIVE clause is expected"_err_en_US);
+ }
+ if (!CurrentDirectiveIsNested() ||
+ !llvm::omp::scanParentAllowedSet.test(GetContextParent().directive)) {
+ context_.Say(x.source,
+ "Orphaned SCAN directives are prohibited; perhaps you forgot "
+ "to enclose the directive in to a WORKSHARING LOOP, a WORKSHARING "
+ "LOOP SIMD or a SIMD directive."_err_en_US);
+ }
+}
+
void OmpStructureChecker::CheckBarrierNesting(
const parser::OpenMPSimpleStandaloneConstruct &x) {
// A barrier region may not be `closely nested` inside a worksharing, loop,
// task, taskloop, critical, ordered, atomic, or master region.
// TODO: Expand the check to include `LOOP` construct as well when it is
// supported.
- if (GetContext().directive == llvm::omp::Directive::OMPD_barrier) {
----------------
kiranchandramohan wrote:
Was this check for barrier not required?
https://github.com/llvm/llvm-project/pull/102792
More information about the flang-commits
mailing list