[clang] [flang] [llvm] [OpenMP] Split UPDATE clause into two: for ATOMIC and for DEPOBJ (PR #212270)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 27 08:28:19 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-codegen
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
More information about the cfe-commits
mailing list