llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-flang-openmp @llvm/pr-subscribers-flang-semantics Author: Krzysztof Parzyszek (kparzysz) <details> <summary>Changes</summary> The UPDATE clause has the same spelling on both of these directives, but functionally it's two different clauses. Split them into "update", and "update_depend_objects" to be able to tie their properties to their enum ids. This should make it easier to implement auto-generating of clause properties in the future by avoiding spelling conflicts. --- Patch is 40.11 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/212270.diff 28 Files Affected: - (modified) clang/include/clang/AST/OpenMPClause.h (+49-41) - (modified) clang/include/clang/AST/RecursiveASTVisitor.h (+6) - (modified) clang/include/clang/Sema/SemaOpenMP.h (+6-6) - (modified) clang/lib/AST/OpenMPClause.cpp (+19-27) - (modified) clang/lib/AST/StmtProfile.cpp (+3) - (modified) clang/lib/AST/TextNodeDumper.cpp (+4-1) - (modified) clang/lib/Basic/OpenMPKinds.cpp (+2-2) - (modified) clang/lib/CodeGen/CGOpenMPRuntime.cpp (+3-3) - (modified) clang/lib/CodeGen/CGOpenMPRuntime.h (+1-1) - (modified) clang/lib/CodeGen/CGStmtOpenMP.cpp (+2-2) - (modified) clang/lib/Parse/ParseOpenMP.cpp (+15-3) - (modified) clang/lib/Sema/SemaOpenMP.cpp (+12-12) - (modified) clang/lib/Sema/TreeTransform.h (+7) - (modified) clang/lib/Serialization/ASTReader.cpp (+11-7) - (modified) clang/lib/Serialization/ASTWriter.cpp (+7-7) - (modified) clang/tools/libclang/CIndex.cpp (+3) - (modified) flang/include/flang/Lower/OpenMP/Clauses.h (+2) - (modified) flang/include/flang/Parser/dump-parse-tree.h (+1-1) - (modified) flang/include/flang/Parser/parse-tree.h (+2-2) - (modified) flang/lib/Lower/OpenMP/Clauses.cpp (+9-10) - (modified) flang/lib/Parser/openmp-parsers.cpp (+7-4) - (modified) flang/lib/Semantics/check-omp-structure.cpp (+4-8) - (modified) flang/lib/Semantics/check-omp-structure.h (+1-1) - (modified) flang/lib/Semantics/openmp-modifiers.cpp (+2-2) - (modified) flang/test/Parser/OpenMP/atomic-compare.f90 (+6-6) - (modified) flang/test/Parser/OpenMP/depobj-construct.f90 (+1-1) - (modified) llvm/include/llvm/Frontend/OpenMP/ClauseT.h (+11-4) - (modified) llvm/include/llvm/Frontend/OpenMP/OMP.td (+8-3) ``````````diff diff --git a/clang/include/clang/AST/OpenMPClause.h b/clang/include/clang/AST/OpenMPClause.h index 641c03bf8ff5c..9e9295e1a0c54 100644 --- a/clang/include/clang/AST/OpenMPClause.h +++ b/clang/include/clang/AST/OpenMPClause.h @@ -2967,7 +2967,40 @@ class OMPWriteClause : public OMPClause { /// #pragma omp atomic update /// \endcode /// In this example directive '#pragma omp atomic' has 'update' clause. -/// Also, this class represents 'update' clause in '#pragma omp depobj' +class OMPUpdateClause : public OMPClause { +public: + /// Build 'update' clause. + /// + /// \param StartLoc Starting location of the clause. + /// \param EndLoc Ending location of the clause. + OMPUpdateClause(SourceLocation StartLoc, SourceLocation EndLoc) + : OMPClause(llvm::omp::OMPC_update, StartLoc, EndLoc) {} + + /// Build an empty clause. + OMPUpdateClause() + : OMPClause(llvm::omp::OMPC_update, SourceLocation(), SourceLocation()) {} + + child_range children() { + return child_range(child_iterator(), child_iterator()); + } + + const_child_range children() const { + return const_child_range(const_child_iterator(), const_child_iterator()); + } + + child_range used_children() { + return child_range(child_iterator(), child_iterator()); + } + const_child_range used_children() const { + return const_child_range(const_child_iterator(), const_child_iterator()); + } + + static bool classof(const OMPClause *T) { + return T->getClauseKind() == llvm::omp::OMPC_update; + } +}; + +/// This class represents 'update' clause in '#pragma omp depobj' /// directive. /// /// \code @@ -2975,38 +3008,32 @@ class OMPWriteClause : public OMPClause { /// \endcode /// In this example directive '#pragma omp depobj' has 'update' clause with 'in' /// dependence kind. -class OMPUpdateClause final +class OMPUpdateDependObjectsClause final : public OMPClause, - private llvm::TrailingObjects<OMPUpdateClause, SourceLocation, - OpenMPDependClauseKind> { + private llvm::TrailingObjects<OMPUpdateDependObjectsClause, + SourceLocation, OpenMPDependClauseKind> { friend class OMPClauseReader; friend TrailingObjects; - /// true if extended version of the clause for 'depobj' directive. - bool IsExtended = false; - /// Define the sizes of each trailing object array except the last one. This /// is required for TrailingObjects to work properly. size_t numTrailingObjects(OverloadToken<SourceLocation>) const { // 2 locations: for '(' and argument location. - return IsExtended ? 2 : 0; + return 2; } /// Sets the location of '(' in clause for 'depobj' directive. void setLParenLoc(SourceLocation Loc) { - assert(IsExtended && "Expected extended clause."); *getTrailingObjects<SourceLocation>() = Loc; } /// Sets the location of '(' in clause for 'depobj' directive. void setArgumentLoc(SourceLocation Loc) { - assert(IsExtended && "Expected extended clause."); *std::next(getTrailingObjects<SourceLocation>(), 1) = Loc; } /// Sets the dependence kind for the clause for 'depobj' directive. void setDependencyKind(OpenMPDependClauseKind DK) { - assert(IsExtended && "Expected extended clause."); *getTrailingObjects<OpenMPDependClauseKind>() = DK; } @@ -3014,25 +3041,15 @@ class OMPUpdateClause final /// /// \param StartLoc Starting location of the clause. /// \param EndLoc Ending location of the clause. - OMPUpdateClause(SourceLocation StartLoc, SourceLocation EndLoc, - bool IsExtended) - : OMPClause(llvm::omp::OMPC_update, StartLoc, EndLoc), - IsExtended(IsExtended) {} + OMPUpdateDependObjectsClause(SourceLocation StartLoc, SourceLocation EndLoc) + : OMPClause(llvm::omp::OMPC_update_depend_objects, StartLoc, EndLoc) {} /// Build an empty clause. - OMPUpdateClause(bool IsExtended) - : OMPClause(llvm::omp::OMPC_update, SourceLocation(), SourceLocation()), - IsExtended(IsExtended) {} + OMPUpdateDependObjectsClause() + : OMPClause(llvm::omp::OMPC_update_depend_objects, SourceLocation(), + SourceLocation()) {} public: - /// Creates clause for 'atomic' directive. - /// - /// \param C AST context. - /// \param StartLoc Starting location of the clause. - /// \param EndLoc Ending location of the clause. - static OMPUpdateClause *Create(const ASTContext &C, SourceLocation StartLoc, - SourceLocation EndLoc); - /// Creates clause for 'depobj' directive. /// /// \param C AST context. @@ -3041,21 +3058,15 @@ class OMPUpdateClause final /// \param ArgumentLoc Location of the argument. /// \param DK Dependence kind. /// \param EndLoc Ending location of the clause. - static OMPUpdateClause *Create(const ASTContext &C, SourceLocation StartLoc, - SourceLocation LParenLoc, - SourceLocation ArgumentLoc, - OpenMPDependClauseKind DK, - SourceLocation EndLoc); + static OMPUpdateDependObjectsClause * + Create(const ASTContext &C, SourceLocation StartLoc, SourceLocation LParenLoc, + SourceLocation ArgumentLoc, OpenMPDependClauseKind DK, + SourceLocation EndLoc); /// Creates an empty clause with the place for \a N variables. /// /// \param C AST context. - /// \param IsExtended true if extended clause for 'depobj' directive must be - /// created. - static OMPUpdateClause *CreateEmpty(const ASTContext &C, bool IsExtended); - - /// Checks if the clause is the extended clauses for 'depobj' directive. - bool isExtended() const { return IsExtended; } + static OMPUpdateDependObjectsClause *CreateEmpty(const ASTContext &C); child_range children() { return child_range(child_iterator(), child_iterator()); @@ -3074,24 +3085,21 @@ class OMPUpdateClause final /// Gets the location of '(' in clause for 'depobj' directive. SourceLocation getLParenLoc() const { - assert(IsExtended && "Expected extended clause."); return *getTrailingObjects<SourceLocation>(); } /// Gets the location of argument in clause for 'depobj' directive. SourceLocation getArgumentLoc() const { - assert(IsExtended && "Expected extended clause."); return *std::next(getTrailingObjects<SourceLocation>(), 1); } /// Gets the dependence kind in clause for 'depobj' directive. OpenMPDependClauseKind getDependencyKind() const { - assert(IsExtended && "Expected extended clause."); return *getTrailingObjects<OpenMPDependClauseKind>(); } static bool classof(const OMPClause *T) { - return T->getClauseKind() == llvm::omp::OMPC_update; + return T->getClauseKind() == llvm::omp::OMPC_update_depend_objects; } }; diff --git a/clang/include/clang/AST/RecursiveASTVisitor.h b/clang/include/clang/AST/RecursiveASTVisitor.h index cdf8a71d54cc9..6913e9b614315 100644 --- a/clang/include/clang/AST/RecursiveASTVisitor.h +++ b/clang/include/clang/AST/RecursiveASTVisitor.h @@ -3710,6 +3710,12 @@ bool RecursiveASTVisitor<Derived>::VisitOMPUpdateClause(OMPUpdateClause *) { return true; } +template <typename Derived> +bool RecursiveASTVisitor<Derived>::VisitOMPUpdateDependObjectsClause( + OMPUpdateDependObjectsClause *) { + return true; +} + template <typename Derived> bool RecursiveASTVisitor<Derived>::VisitOMPCaptureClause(OMPCaptureClause *) { return true; diff --git a/clang/include/clang/Sema/SemaOpenMP.h b/clang/include/clang/Sema/SemaOpenMP.h index 9ef388a744db8..361473140e236 100644 --- a/clang/include/clang/Sema/SemaOpenMP.h +++ b/clang/include/clang/Sema/SemaOpenMP.h @@ -1012,12 +1012,12 @@ class SemaOpenMP : public SemaBase { SourceLocation LParenLoc, SourceLocation MLoc, SourceLocation KindLoc, SourceLocation EndLoc); - /// Called on well-formed 'update' clause. - OMPClause *ActOnOpenMPUpdateClause(OpenMPDependClauseKind Kind, - SourceLocation KindLoc, - SourceLocation StartLoc, - SourceLocation LParenLoc, - SourceLocation EndLoc); + /// Called on well-formed 'update_depend_objects' clause. + OMPClause *ActOnOpenMPUpdateDependObjectsClause(OpenMPDependClauseKind Kind, + SourceLocation KindLoc, + SourceLocation StartLoc, + SourceLocation LParenLoc, + SourceLocation EndLoc); /// Called on well-formed 'holds' clause. OMPClause *ActOnOpenMPHoldsClause(Expr *E, SourceLocation StartLoc, SourceLocation LParenLoc, diff --git a/clang/lib/AST/OpenMPClause.cpp b/clang/lib/AST/OpenMPClause.cpp index d451255bf5845..cac701994def8 100644 --- a/clang/lib/AST/OpenMPClause.cpp +++ b/clang/lib/AST/OpenMPClause.cpp @@ -409,36 +409,26 @@ const Expr *OMPOrderedClause::getLoopCounter(unsigned NumLoop) const { return getTrailingObjects()[NumberOfLoops + NumLoop]; } -OMPUpdateClause *OMPUpdateClause::Create(const ASTContext &C, - SourceLocation StartLoc, - SourceLocation EndLoc) { - return new (C) OMPUpdateClause(StartLoc, EndLoc, /*IsExtended=*/false); -} - -OMPUpdateClause * -OMPUpdateClause::Create(const ASTContext &C, SourceLocation StartLoc, - SourceLocation LParenLoc, SourceLocation ArgumentLoc, - OpenMPDependClauseKind DK, SourceLocation EndLoc) { +OMPUpdateDependObjectsClause *OMPUpdateDependObjectsClause::Create( + const ASTContext &C, SourceLocation StartLoc, SourceLocation LParenLoc, + SourceLocation ArgumentLoc, OpenMPDependClauseKind DK, + SourceLocation EndLoc) { void *Mem = C.Allocate(totalSizeToAlloc<SourceLocation, OpenMPDependClauseKind>(2, 1), - alignof(OMPUpdateClause)); - auto *Clause = - new (Mem) OMPUpdateClause(StartLoc, EndLoc, /*IsExtended=*/true); + alignof(OMPUpdateDependObjectsClause)); + auto *Clause = new (Mem) OMPUpdateDependObjectsClause(StartLoc, EndLoc); Clause->setLParenLoc(LParenLoc); Clause->setArgumentLoc(ArgumentLoc); Clause->setDependencyKind(DK); return Clause; } -OMPUpdateClause *OMPUpdateClause::CreateEmpty(const ASTContext &C, - bool IsExtended) { - if (!IsExtended) - return new (C) OMPUpdateClause(/*IsExtended=*/false); +OMPUpdateDependObjectsClause * +OMPUpdateDependObjectsClause::CreateEmpty(const ASTContext &C) { void *Mem = C.Allocate(totalSizeToAlloc<SourceLocation, OpenMPDependClauseKind>(2, 1), - alignof(OMPUpdateClause)); - auto *Clause = new (Mem) OMPUpdateClause(/*IsExtended=*/true); - Clause->IsExtended = true; + alignof(OMPUpdateDependObjectsClause)); + auto *Clause = new (Mem) OMPUpdateDependObjectsClause(); return Clause; } @@ -2261,14 +2251,16 @@ void OMPClausePrinter::VisitOMPReadClause(OMPReadClause *) { OS << "read"; } void OMPClausePrinter::VisitOMPWriteClause(OMPWriteClause *) { OS << "write"; } -void OMPClausePrinter::VisitOMPUpdateClause(OMPUpdateClause *Node) { +void OMPClausePrinter::VisitOMPUpdateClause(OMPUpdateClause *) { OS << "update"; - if (Node->isExtended()) { - OS << "("; - OS << getOpenMPSimpleClauseTypeName(Node->getClauseKind(), - Node->getDependencyKind()); - OS << ")"; - } +} + +void OMPClausePrinter::VisitOMPUpdateDependObjectsClause( + OMPUpdateDependObjectsClause *Node) { + OS << "update("; + OS << getOpenMPSimpleClauseTypeName(Node->getClauseKind(), + Node->getDependencyKind()); + OS << ")"; } void OMPClausePrinter::VisitOMPCaptureClause(OMPCaptureClause *) { diff --git a/clang/lib/AST/StmtProfile.cpp b/clang/lib/AST/StmtProfile.cpp index 00c132f1ed9e0..ec4493d0afa41 100644 --- a/clang/lib/AST/StmtProfile.cpp +++ b/clang/lib/AST/StmtProfile.cpp @@ -630,6 +630,9 @@ void OMPClauseProfiler::VisitOMPWriteClause(const OMPWriteClause *) {} void OMPClauseProfiler::VisitOMPUpdateClause(const OMPUpdateClause *) {} +void OMPClauseProfiler::VisitOMPUpdateDependObjectsClause( + const OMPUpdateDependObjectsClause *) {} + void OMPClauseProfiler::VisitOMPCaptureClause(const OMPCaptureClause *) {} void OMPClauseProfiler::VisitOMPCompareClause(const OMPCompareClause *) {} diff --git a/clang/lib/AST/TextNodeDumper.cpp b/clang/lib/AST/TextNodeDumper.cpp index 4bc7607a87d92..b2b3eda9ff2e3 100644 --- a/clang/lib/AST/TextNodeDumper.cpp +++ b/clang/lib/AST/TextNodeDumper.cpp @@ -372,7 +372,10 @@ void TextNodeDumper::Visit(const OMPClause *C) { } { ColorScope Color(OS, ShowColors, ASTDumpColor::Attr); - StringRef ClauseName(llvm::omp::getOpenMPClauseName(C->getClauseKind())); + OpenMPClauseKind CKind = C->getClauseKind(); + StringRef ClauseName(CKind == llvm::omp::Clause::OMPC_update_depend_objects + ? StringRef("UpdateDependObjects") + : llvm::omp::getOpenMPClauseName(CKind)); OS << "OMP" << ClauseName.substr(/*Start=*/0, /*N=*/1).upper() << ClauseName.drop_front() << "Clause"; } diff --git a/clang/lib/Basic/OpenMPKinds.cpp b/clang/lib/Basic/OpenMPKinds.cpp index 5dd2a728ee1cd..1a2a963243f6c 100644 --- a/clang/lib/Basic/OpenMPKinds.cpp +++ b/clang/lib/Basic/OpenMPKinds.cpp @@ -162,7 +162,7 @@ unsigned clang::getOpenMPSimpleClauseType(OpenMPClauseKind Kind, StringRef Str, .Case(#Name, static_cast<unsigned>(OMPC_ORDER_MODIFIER_##Name)) #include "clang/Basic/OpenMPKinds.def" .Default(OMPC_ORDER_unknown); - case OMPC_update: + case OMPC_update_depend_objects: return llvm::StringSwitch<OpenMPDependClauseKind>(Str) #define OPENMP_DEPEND_KIND(Name) .Case(#Name, OMPC_DEPEND_##Name) #include "clang/Basic/OpenMPKinds.def" @@ -517,7 +517,7 @@ const char *clang::getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind, #include "clang/Basic/OpenMPKinds.def" } llvm_unreachable("Invalid OpenMP 'order' clause type"); - case OMPC_update: + case OMPC_update_depend_objects: switch (Type) { case OMPC_DEPEND_unknown: return "unknown"; diff --git a/clang/lib/CodeGen/CGOpenMPRuntime.cpp b/clang/lib/CodeGen/CGOpenMPRuntime.cpp index c338935950b32..9e71e82e5ee86 100644 --- a/clang/lib/CodeGen/CGOpenMPRuntime.cpp +++ b/clang/lib/CodeGen/CGOpenMPRuntime.cpp @@ -4620,9 +4620,9 @@ void CGOpenMPRuntime::emitDestroyClause(CodeGenFunction &CGF, LValue DepobjLVal, Args); } -void CGOpenMPRuntime::emitUpdateClause(CodeGenFunction &CGF, LValue DepobjLVal, - OpenMPDependClauseKind NewDepKind, - SourceLocation Loc) { +void CGOpenMPRuntime::emitUpdateDependObjectsClause( + CodeGenFunction &CGF, LValue DepobjLVal, OpenMPDependClauseKind NewDepKind, + SourceLocation Loc) { ASTContext &C = CGM.getContext(); QualType FlagsTy; getDependTypes(C, KmpDependInfoTy, FlagsTy); diff --git a/clang/lib/CodeGen/CGOpenMPRuntime.h b/clang/lib/CodeGen/CGOpenMPRuntime.h index a81d3830a8035..6b29fdb4fafb5 100644 --- a/clang/lib/CodeGen/CGOpenMPRuntime.h +++ b/clang/lib/CodeGen/CGOpenMPRuntime.h @@ -1702,7 +1702,7 @@ class CGOpenMPRuntime { /// Updates the dependency kind in the specified depobj object. /// \param DepobjLVal LValue for the main depobj object. /// \param NewDepKind New dependency kind. - void emitUpdateClause(CodeGenFunction &CGF, LValue DepobjLVal, + void emitUpdateDependObjectsClause(CodeGenFunction &CGF, LValue DepobjLVal, OpenMPDependClauseKind NewDepKind, SourceLocation Loc); /// Initializes user defined allocators specified in the uses_allocators diff --git a/clang/lib/CodeGen/CGStmtOpenMP.cpp b/clang/lib/CodeGen/CGStmtOpenMP.cpp index 18524a7c32b7a..97c43b4c0b384 100644 --- a/clang/lib/CodeGen/CGStmtOpenMP.cpp +++ b/clang/lib/CodeGen/CGStmtOpenMP.cpp @@ -6002,8 +6002,8 @@ void CodeGenFunction::EmitOMPDepobjDirective(const OMPDepobjDirective &S) { CGM.getOpenMPRuntime().emitDestroyClause(*this, DOLVal, DC->getBeginLoc()); return; } - if (const auto *UC = S.getSingleClause<OMPUpdateClause>()) { - CGM.getOpenMPRuntime().emitUpdateClause( + if (const auto *UC = S.getSingleClause<OMPUpdateDependObjectsClause>()) { + CGM.getOpenMPRuntime().emitUpdateDependObjectsClause( *this, DOLVal, UC->getDependencyKind(), UC->getBeginLoc()); return; } diff --git a/clang/lib/Parse/ParseOpenMP.cpp b/clang/lib/Parse/ParseOpenMP.cpp index 045b704f5480c..2c65651c49750 100644 --- a/clang/lib/Parse/ParseOpenMP.cpp +++ b/clang/lib/Parse/ParseOpenMP.cpp @@ -1597,6 +1597,8 @@ void Parser::ParseOpenMPClauses(OpenMPDirectiveKind DKind, OpenMPClauseKind CKind = Tok.isAnnotation() ? OMPC_unknown : getOpenMPClauseKind(PP.getSpelling(Tok)); + if (DKind == OMPD_depobj && CKind == OMPC_update) + CKind = OMPC_update_depend_objects; Actions.OpenMP().StartOpenMPClause(CKind); OMPClause *Clause = ParseOpenMPClause(DKind, CKind, !SeenClauses[unsigned(CKind)]); @@ -2374,6 +2376,9 @@ StmtResult Parser::ParseOpenMPExecutableDirective( OpenMPClauseKind CKind = Tok.isAnnotation() ? OMPC_unknown : getOpenMPClauseKind(PP.getSpelling(Tok)); + if (DKind == OMPD_depobj && CKind == OMPC_update) + CKind = OMPC_update_depend_objects; + if (HasImplicitClause) { assert(CKind == OMPC_unknown && "Must be unknown implicit clause."); if (DKind == OMPD_flush) { @@ -3421,10 +3426,17 @@ OMPClause *Parser::ParseOpenMPClause(OpenMPDirectiveKind DKind, << getOpenMPClauseName(CKind) << 0; ErrorFound = true; } + Clause = ParseOpenMPClause(CKind, WrongDirective); + break; + case OMPC_update_depend_objects: + if (!FirstClause) { + Diag(Tok, diag::err_omp_more_one_clause) + << getOpenMPDirectiveName(DKind, OMPVersion) + << getOpenMPClauseName(CKind) << 0; + ErrorFound = true; + } - Clause = (DKind == OMPD_depobj) - ? ParseOpenMPSimpleClause(CKind, WrongDirective) - : ParseOpenMPClause(CKind, WrongDirective); + Clause = ParseOpenMPSimpleClause(CKind, WrongDirective); break; case OMPC_num_teams: case OMPC_thread_limit: diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 5b59eacb3eea8..76bb0d38d428f 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -17674,9 +17674,10 @@ OMPClause *SemaOpenMP::ActOnOpenMPSimpleClause( Res = ActOnOpenMPFailClause(static_cast<OpenMPClauseKind>(Argument), ArgumentLoc, StartLoc, LParenLoc, EndLoc); break; - case OMPC_update: - Res = ActOnOpenMPUpdateClause(static_cast<OpenMPDependClauseKind>(Argument), - ArgumentLoc, StartLoc, LParenLoc, EndLoc); + case OMPC_update_depend_objects: + Res = ActOnOpenMPUpdateDependObjectsClause( + static_cast<OpenMPDependClauseKind>(Argument), ArgumentLoc, StartLoc, + LParenLoc, EndLoc); break; case OMPC_bind: Res = ActOnOpenMPBindClause(static_cast<OpenMPBindClauseKind>(Argument), @@ -17728,6 +17729,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPSimpleClause( case OMPC_write: case OMPC_capture: case OMPC_compare: + case OMPC_update: case OMPC_seq_cst: case OMPC_acq_rel: case OMPC_acquire: @@ -18137,11 +18139,9 @@ OMPClause *SemaOpenMP::ActOnOpenMPOrderClause( Kind, KindLoc, StartLoc, LParenLoc, EndLoc, Modifier, MLoc); } -OMPClause *SemaOpenMP::ActOnOpenMPUpdateClause(OpenMPDependClauseKind Kind, - SourceLocation KindKwLoc, - SourceLocation StartLoc, - SourceLocation LPare... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/212270 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
