diff --git a/flang/lib/Lower/OpenMP/Clauses.cpp b/flang/lib/Lower/OpenMP/Clauses.cpp index 5664d8ab2a5d8..831ba23870360 100644 --- a/flang/lib/Lower/OpenMP/Clauses.cpp +++ b/flang/lib/Lower/OpenMP/Clauses.cpp @@ -202,6 +202,7 @@ MAKE_EMPTY_CLASS(Mergeable, Mergeable); MAKE_EMPTY_CLASS(Nogroup, Nogroup); MAKE_EMPTY_CLASS(NoOpenmp, NoOpenmp); MAKE_EMPTY_CLASS(NoOpenmpRoutines, NoOpenmpRoutines); +MAKE_EMPTY_CLASS(NoOpenmpConstructs, NoOpenmpConstructs); MAKE_EMPTY_CLASS(NoParallelism, NoParallelism); MAKE_EMPTY_CLASS(Notinbranch, Notinbranch); MAKE_EMPTY_CLASS(Nowait, Nowait); @@ -1035,6 +1036,7 @@ Nontemporal make(const parser::OmpClause::Nontemporal &inp, // NoOpenmp: empty // NoOpenmpRoutines: empty +// NoOpenmpConstructs: empty // NoParallelism: empty // Notinbranch: empty diff --git a/flang/lib/Lower/OpenMP/Clauses.h b/flang/lib/Lower/OpenMP/Clauses.h index aea317b5907ff..0f172e0acf626 100644 --- a/flang/lib/Lower/OpenMP/Clauses.h +++ b/flang/lib/Lower/OpenMP/Clauses.h @@ -242,6 +242,8 @@ using Mergeable = tomp::clause::MergeableT; using Message = tomp::clause::MessageT; using NoOpenmp = tomp::clause::NoOpenmpT; using NoOpenmpRoutines = tomp::clause::NoOpenmpRoutinesT; +using NoOpenmpConstructs = + tomp::clause::NoOpenmpConstructsT; using NoParallelism = tomp::clause::NoParallelismT; using Nocontext = tomp::clause::NocontextT; using Nogroup = tomp::clause::NogroupT; diff --git a/flang/lib/Semantics/check-omp-structure.cpp b/flang/lib/Semantics/check-omp-structure.cpp index 428abe5ea7148..fd2893998205c 100644 --- a/flang/lib/Semantics/check-omp-structure.cpp +++ b/flang/lib/Semantics/check-omp-structure.cpp @@ -2966,6 +2966,7 @@ CHECK_SIMPLE_CLAUSE(Indirect, OMPC_indirect) CHECK_SIMPLE_CLAUSE(Mergeable, OMPC_mergeable) CHECK_SIMPLE_CLAUSE(NoOpenmp, OMPC_no_openmp) CHECK_SIMPLE_CLAUSE(NoOpenmpRoutines, OMPC_no_openmp_routines) +CHECK_SIMPLE_CLAUSE(NoOpenmpConstructs, OMPC_no_openmp_constructs) CHECK_SIMPLE_CLAUSE(NoParallelism, OMPC_no_parallelism) CHECK_SIMPLE_CLAUSE(Nogroup, OMPC_nogroup) CHECK_SIMPLE_CLAUSE(Notinbranch, OMPC_notinbranch) diff --git a/llvm/include/llvm/Frontend/OpenMP/ClauseT.h b/llvm/include/llvm/Frontend/OpenMP/ClauseT.h index 3e22b6ff71c8f..5dc1c4cb54c7c 100644 --- a/llvm/include/llvm/Frontend/OpenMP/ClauseT.h +++ b/llvm/include/llvm/Frontend/OpenMP/ClauseT.h @@ -846,6 +846,12 @@ struct NoOpenmpRoutinesT { using EmptyTrait = std::true_type; }; +// V6.0: [10.6.1] `assumption` clauses +template // +struct NoOpenmpConstructsT { + using EmptyTrait = std::true_type; +}; + // V5.2: [8.3.1] `assumption` clauses template // struct NoParallelismT { @@ -1239,7 +1245,7 @@ using EmptyClausesT = std::variant< ReverseOffloadT, SeqCstT, SimdT, ThreadsT, UnifiedAddressT, UnifiedSharedMemoryT, UnknownT, UntiedT, UseT, WeakT, - WriteT>; + WriteT, NoOpenmpConstructsT>; template using IncompleteClausesT =