https://github.com/kparzysz created https://github.com/llvm/llvm-project/pull/138179
The "alternativeName" was introduced ~5 years ago in D82405, and at the moment it has only one use, the one that the original change introduced. OpenMP 6.0 spec has introduced different spellings of some directives, but the "alternativeName" is not an adequate mechanism to implement it. For those reasons remove the "alternativeName" member from both Clause and Directive in DirectiveBase.td. Since the alternativeName text appeared in a number of clang OpenMP tests, implement `getOpenMPClauseNameForDiag` in SemaOpenMP.cpp to preserve the text of the diagnostics. >From d991e966f12229fc4a9cc1114e3fa4651bc9d59d Mon Sep 17 00:00:00 2001 From: Krzysztof Parzyszek <krzysztof.parzys...@amd.com> Date: Thu, 1 May 2025 11:42:12 -0500 Subject: [PATCH] [OpenMP] Remove "alternativeName" from Clause and Directive classes The "alternativeName" was introduced ~5 years ago in D82405, and at the moment it has only one use, the one that the original change introduced. OpenMP 6.0 spec has introduced different spellings of some directives, but the "alternativeName" is not an adequate mechanism to implement it. For those reasons remove the "alternativeName" member from both Clause and Directive in DirectiveBase.td. Since the alternativeName text appeared in a number of clang OpenMP tests, implement `getOpenMPClauseNameForDiag` in SemaOpenMP.cpp to preserve the text of the diagnostics. --- clang/lib/Sema/SemaOpenMP.cpp | 277 +++++++++--------- .../llvm/Frontend/Directive/DirectiveBase.td | 7 - llvm/include/llvm/Frontend/OpenMP/OMP.td | 1 - llvm/include/llvm/TableGen/DirectiveEmitter.h | 4 - .../utils/TableGen/Basic/DirectiveEmitter.cpp | 7 +- 5 files changed, 145 insertions(+), 151 deletions(-) diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 274d3b90ff30f..71cc31c4745c2 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -60,6 +60,8 @@ static const Expr *checkMapClauseExpressionBase( OMPClauseMappableExprCommon::MappableExprComponentList &CurComponents, OpenMPClauseKind CKind, OpenMPDirectiveKind DKind, bool NoDiagnose); +static std::string getOpenMPClauseNameForDiag(OpenMPClauseKind C); + namespace { /// Default data sharing attributes, which can be applied to directive. enum DefaultDataSharingAttributes { @@ -680,10 +682,10 @@ class DSAStackTy { if (CNew->getClauseKind() == CPrev->getClauseKind()) { SemaRef.Diag(CNew->getBeginLoc(), diag::err_omp_requires_clause_redeclaration) - << getOpenMPClauseName(CNew->getClauseKind()); + << getOpenMPClauseNameForDiag(CNew->getClauseKind()); SemaRef.Diag(CPrev->getBeginLoc(), diag::note_omp_requires_previous_clause) - << getOpenMPClauseName(CPrev->getClauseKind()); + << getOpenMPClauseNameForDiag(CPrev->getClauseKind()); IsDuplicate = true; } } @@ -1264,6 +1266,12 @@ static ValueDecl *getCanonicalDecl(ValueDecl *D) { getCanonicalDecl(const_cast<const ValueDecl *>(D))); } +static std::string getOpenMPClauseNameForDiag(OpenMPClauseKind C) { + if (C == OMPC_threadprivate) + return getOpenMPClauseName(C).str() + " or thread local"; + return getOpenMPClauseName(C).str(); +} + DSAStackTy::DSAVarData DSAStackTy::getDSA(const_iterator &Iter, ValueDecl *D) const { D = getCanonicalDecl(D); @@ -1704,7 +1712,7 @@ static bool rejectConstNotMutableType(Sema &SemaRef, const ValueDecl *D, unsigned Diag = ListItemNotVar ? diag::err_omp_const_list_item : IsClassType ? diag::err_omp_const_not_mutable_variable : diag::err_omp_const_variable; - SemaRef.Diag(ELoc, Diag) << getOpenMPClauseName(CKind); + SemaRef.Diag(ELoc, Diag) << getOpenMPClauseNameForDiag(CKind); if (!ListItemNotVar && D) { const VarDecl *VD = dyn_cast<VarDecl>(D); bool IsDecl = !VD || VD->isThisDeclarationADefinition(Context) == @@ -3587,7 +3595,7 @@ SemaOpenMP::CheckOMPRequiresDecl(SourceLocation Loc, isa<OMPReverseOffloadClause>(CNew) || isa<OMPDynamicAllocatorsClause>(CNew)) { Diag(Loc, diag::err_omp_directive_before_requires) - << "target" << getOpenMPClauseName(CNew->getClauseKind()); + << "target" << getOpenMPClauseNameForDiag(CNew->getClauseKind()); for (SourceLocation TargetLoc : TargetLocations) { Diag(TargetLoc, diag::note_omp_requires_encountered_directive) << "target"; @@ -3595,7 +3603,7 @@ SemaOpenMP::CheckOMPRequiresDecl(SourceLocation Loc, } else if (!AtomicLoc.isInvalid() && isa<OMPAtomicDefaultMemOrderClause>(CNew)) { Diag(Loc, diag::err_omp_directive_before_requires) - << "atomic" << getOpenMPClauseName(CNew->getClauseKind()); + << "atomic" << getOpenMPClauseNameForDiag(CNew->getClauseKind()); Diag(AtomicLoc, diag::note_omp_requires_encountered_directive) << "atomic"; } @@ -3614,7 +3622,7 @@ static void reportOriginalDsa(Sema &SemaRef, const DSAStackTy *Stack, bool IsLoopIterVar) { if (DVar.RefExpr) { SemaRef.Diag(DVar.RefExpr->getExprLoc(), diag::note_omp_explicit_dsa) - << getOpenMPClauseName(DVar.CKind); + << getOpenMPClauseNameForDiag(DVar.CKind); return; } enum { @@ -3661,7 +3669,7 @@ static void reportOriginalDsa(Sema &SemaRef, const DSAStackTy *Stack, << getOpenMPDirectiveName(Stack->getCurrentDirective()); } else if (DVar.ImplicitDSALoc.isValid()) { SemaRef.Diag(DVar.ImplicitDSALoc, diag::note_omp_implicit_dsa) - << getOpenMPClauseName(DVar.CKind); + << getOpenMPClauseNameForDiag(DVar.CKind); } } @@ -4566,7 +4574,7 @@ static bool checkOrderedOrderSpecified(Sema &S, if (Ordered && Order) { S.Diag(Order->getKindKwLoc(), diag::err_omp_simple_clause_incompatible_with_ordered) - << getOpenMPClauseName(OMPC_order) + << getOpenMPClauseNameForDiag(OMPC_order) << getOpenMPSimpleClauseTypeName(OMPC_order, OMPC_ORDER_concurrent) << SourceRange(Order->getBeginLoc(), Order->getEndLoc()); S.Diag(Ordered->getBeginLoc(), diag::note_omp_ordered_param) @@ -4654,7 +4662,7 @@ StmtResult SemaOpenMP::ActOnOpenMPRegionEnd(StmtResult S, ? SC->getFirstScheduleModifierLoc() : SC->getSecondScheduleModifierLoc(), diag::err_omp_simple_clause_incompatible_with_ordered) - << getOpenMPClauseName(OMPC_schedule) + << getOpenMPClauseNameForDiag(OMPC_schedule) << getOpenMPSimpleClauseTypeName(OMPC_schedule, OMPC_SCHEDULE_MODIFIER_nonmonotonic) << SourceRange(OC->getBeginLoc(), OC->getEndLoc()); @@ -5068,8 +5076,9 @@ static bool checkIfClauses(Sema &S, OpenMPDirectiveKind Kind, auto &FNM = FoundNameModifiers[CurNM]; if (FNM) { S.Diag(C->getBeginLoc(), diag::err_omp_more_one_clause) - << getOpenMPDirectiveName(Kind) << getOpenMPClauseName(OMPC_if) - << (CurNM != OMPD_unknown) << getOpenMPDirectiveName(CurNM); + << getOpenMPDirectiveName(Kind) + << getOpenMPClauseNameForDiag(OMPC_if) << (CurNM != OMPD_unknown) + << getOpenMPDirectiveName(CurNM); ErrorFound = true; } else if (CurNM != OMPD_unknown) { NameModifierLoc.push_back(IC->getNameModifierLoc()); @@ -6755,10 +6764,10 @@ SemaOpenMP::DeclGroupPtrTy SemaOpenMP::ActOnOpenMPDeclareSimdDirective( auto [It, Inserted] = AlignedArgs.try_emplace(CanonPVD, E); if (!Inserted) { Diag(E->getExprLoc(), diag::err_omp_used_in_clause_twice) - << 1 << getOpenMPClauseName(OMPC_aligned) + << 1 << getOpenMPClauseNameForDiag(OMPC_aligned) << E->getSourceRange(); Diag(It->second->getExprLoc(), diag::note_omp_explicit_dsa) - << getOpenMPClauseName(OMPC_aligned); + << getOpenMPClauseNameForDiag(OMPC_aligned); continue; } QualType QTy = PVD->getType() @@ -6777,9 +6786,10 @@ SemaOpenMP::DeclGroupPtrTy SemaOpenMP::ActOnOpenMPDeclareSimdDirective( if (isa<CXXThisExpr>(E)) { if (AlignedThis) { Diag(E->getExprLoc(), diag::err_omp_used_in_clause_twice) - << 2 << getOpenMPClauseName(OMPC_aligned) << E->getSourceRange(); + << 2 << getOpenMPClauseNameForDiag(OMPC_aligned) + << E->getSourceRange(); Diag(AlignedThis->getExprLoc(), diag::note_omp_explicit_dsa) - << getOpenMPClauseName(OMPC_aligned); + << getOpenMPClauseNameForDiag(OMPC_aligned); } AlignedThis = E; continue; @@ -6824,20 +6834,21 @@ SemaOpenMP::DeclGroupPtrTy SemaOpenMP::ActOnOpenMPDeclareSimdDirective( // A list-item cannot appear in more than one linear clause. if (auto It = LinearArgs.find(CanonPVD); It != LinearArgs.end()) { Diag(E->getExprLoc(), diag::err_omp_wrong_dsa) - << getOpenMPClauseName(OMPC_linear) - << getOpenMPClauseName(OMPC_linear) << E->getSourceRange(); + << getOpenMPClauseNameForDiag(OMPC_linear) + << getOpenMPClauseNameForDiag(OMPC_linear) + << E->getSourceRange(); Diag(It->second->getExprLoc(), diag::note_omp_explicit_dsa) - << getOpenMPClauseName(OMPC_linear); + << getOpenMPClauseNameForDiag(OMPC_linear); continue; } // Each argument can appear in at most one uniform or linear clause. if (auto It = UniformedArgs.find(CanonPVD); It != UniformedArgs.end()) { Diag(E->getExprLoc(), diag::err_omp_wrong_dsa) - << getOpenMPClauseName(OMPC_linear) - << getOpenMPClauseName(OMPC_uniform) << E->getSourceRange(); + << getOpenMPClauseNameForDiag(OMPC_linear) + << getOpenMPClauseNameForDiag(OMPC_uniform) << E->getSourceRange(); Diag(It->second->getExprLoc(), diag::note_omp_explicit_dsa) - << getOpenMPClauseName(OMPC_uniform); + << getOpenMPClauseNameForDiag(OMPC_uniform); continue; } LinearArgs[CanonPVD] = E; @@ -6854,11 +6865,11 @@ SemaOpenMP::DeclGroupPtrTy SemaOpenMP::ActOnOpenMPDeclareSimdDirective( if (isa<CXXThisExpr>(E)) { if (UniformedLinearThis) { Diag(E->getExprLoc(), diag::err_omp_wrong_dsa) - << getOpenMPClauseName(OMPC_linear) - << getOpenMPClauseName(IsUniformedThis ? OMPC_uniform : OMPC_linear) + << getOpenMPClauseNameForDiag(OMPC_linear) + << getOpenMPClauseNameForDiag(IsUniformedThis ? OMPC_uniform : OMPC_linear) << E->getSourceRange(); Diag(UniformedLinearThis->getExprLoc(), diag::note_omp_explicit_dsa) - << getOpenMPClauseName(IsUniformedThis ? OMPC_uniform + << getOpenMPClauseNameForDiag(IsUniformedThis ? OMPC_uniform : OMPC_linear); continue; } @@ -7549,10 +7560,10 @@ void SemaOpenMP::ActOnOpenMPDeclareVariantDirective( llvm::omp::TraitProperty::construct_dispatch_dispatch)) { if (!AllAdjustArgs.empty()) Diag(AdjustArgsLoc, diag::err_omp_clause_requires_dispatch_construct) - << getOpenMPClauseName(OMPC_adjust_args); + << getOpenMPClauseNameForDiag(OMPC_adjust_args); if (!AppendArgs.empty()) Diag(AppendArgsLoc, diag::err_omp_clause_requires_dispatch_construct) - << getOpenMPClauseName(OMPC_append_args); + << getOpenMPClauseNameForDiag(OMPC_append_args); return; } } @@ -9127,8 +9138,8 @@ void SemaOpenMP::ActOnOpenMPLoopInitialization(SourceLocation ForLoc, DVar.CKind != OMPC_private && DVar.CKind != OMPC_lastprivate)) && (DVar.CKind != OMPC_private || DVar.RefExpr)) { Diag(Init->getBeginLoc(), diag::err_omp_loop_var_dsa) - << getOpenMPClauseName(DVar.CKind) << getOpenMPDirectiveName(DKind) - << getOpenMPClauseName(PredeterminedCKind); + << getOpenMPClauseNameForDiag(DVar.CKind) << getOpenMPDirectiveName(DKind) + << getOpenMPClauseNameForDiag(PredeterminedCKind); if (DVar.RefExpr == nullptr) DVar.CKind = PredeterminedCKind; reportOriginalDsa(SemaRef, DSAStack, D, DVar, /*IsLoopIterVar=*/true); @@ -10984,10 +10995,10 @@ static bool checkMutuallyExclusiveClauses( PrevClause = C; } else if (PrevClause->getClauseKind() != C->getClauseKind()) { S.Diag(C->getBeginLoc(), diag::err_omp_clauses_mutually_exclusive) - << getOpenMPClauseName(C->getClauseKind()) - << getOpenMPClauseName(PrevClause->getClauseKind()); + << getOpenMPClauseNameForDiag(C->getClauseKind()) + << getOpenMPClauseNameForDiag(PrevClause->getClauseKind()); S.Diag(PrevClause->getBeginLoc(), diag::note_omp_previous_clause) - << getOpenMPClauseName(PrevClause->getClauseKind()); + << getOpenMPClauseNameForDiag(PrevClause->getClauseKind()); ErrorFound = true; } } @@ -11113,7 +11124,7 @@ StmtResult SemaOpenMP::ActOnOpenMPFlushDirective(ArrayRef<OMPClause *> Clauses, << getOpenMPDirectiveName(OMPD_flush) << 1 << SourceRange(C->getBeginLoc(), C->getEndLoc()); Diag(MemOrderLoc, diag::note_omp_previous_mem_order_clause) - << getOpenMPClauseName(MemOrderKind); + << getOpenMPClauseNameForDiag(MemOrderKind); } else { MemOrderKind = C->getClauseKind(); MemOrderLoc = C->getBeginLoc(); @@ -11122,9 +11133,9 @@ StmtResult SemaOpenMP::ActOnOpenMPFlushDirective(ArrayRef<OMPClause *> Clauses, } if (FC && OrderClause) { Diag(FC->getLParenLoc(), diag::err_omp_flush_order_clause_and_list) - << getOpenMPClauseName(OrderClause->getClauseKind()); + << getOpenMPClauseNameForDiag(OrderClause->getClauseKind()); Diag(OrderClause->getBeginLoc(), diag::note_omp_flush_order_clause_here) - << getOpenMPClauseName(OrderClause->getClauseKind()); + << getOpenMPClauseNameForDiag(OrderClause->getClauseKind()); return StmtError(); } return OMPFlushDirective::Create(getASTContext(), StartLoc, EndLoc, Clauses); @@ -11207,7 +11218,7 @@ SemaOpenMP::ActOnOpenMPOrderedDirective(ArrayRef<OMPClause *> Clauses, if ((DC && DependSourceClause) || (DOC && DoacrossSourceClause)) { Diag(C->getBeginLoc(), diag::err_omp_more_one_clause) << getOpenMPDirectiveName(OMPD_ordered) - << getOpenMPClauseName(DC ? OMPC_depend : OMPC_doacross) << 2; + << getOpenMPClauseNameForDiag(DC ? OMPC_depend : OMPC_doacross) << 2; ErrorFound = true; } else { if (DC) @@ -11250,15 +11261,15 @@ SemaOpenMP::ActOnOpenMPOrderedDirective(ArrayRef<OMPClause *> Clauses, SourceLocation Loc = DependFound ? DependFound->getBeginLoc() : DoacrossFound->getBeginLoc(); Diag(Loc, diag::err_omp_depend_clause_thread_simd) - << getOpenMPClauseName(DependFound ? OMPC_depend : OMPC_doacross) - << getOpenMPClauseName(TC ? TC->getClauseKind() : SC->getClauseKind()); + << getOpenMPClauseNameForDiag(DependFound ? OMPC_depend : OMPC_doacross) + << getOpenMPClauseNameForDiag(TC ? TC->getClauseKind() : SC->getClauseKind()); ErrorFound = true; } else if ((DependFound || DoacrossFound) && !DSAStack->getParentOrderedRegionParam().first) { SourceLocation Loc = DependFound ? DependFound->getBeginLoc() : DoacrossFound->getBeginLoc(); Diag(Loc, diag::err_omp_ordered_directive_without_param) - << getOpenMPClauseName(DependFound ? OMPC_depend : OMPC_doacross); + << getOpenMPClauseNameForDiag(DependFound ? OMPC_depend : OMPC_doacross); ErrorFound = true; } else if (TC || Clauses.empty()) { if (const Expr *Param = DSAStack->getParentOrderedRegionParam().first) { @@ -12387,7 +12398,7 @@ StmtResult SemaOpenMP::ActOnOpenMPAtomicDirective(ArrayRef<OMPClause *> Clauses, Diag(C->getBeginLoc(), diag::err_omp_atomic_several_clauses) << SourceRange(C->getBeginLoc(), C->getEndLoc()); Diag(AtomicKindLoc, diag::note_omp_previous_mem_order_clause) - << getOpenMPClauseName(AtomicKind); + << getOpenMPClauseNameForDiag(AtomicKind); } else { AtomicKind = C->getClauseKind(); AtomicKindLoc = C->getBeginLoc(); @@ -12395,7 +12406,7 @@ StmtResult SemaOpenMP::ActOnOpenMPAtomicDirective(ArrayRef<OMPClause *> Clauses, Diag(C->getBeginLoc(), diag::err_omp_atomic_several_clauses) << SourceRange(C->getBeginLoc(), C->getEndLoc()); Diag(AtomicKindLoc, diag::note_omp_previous_mem_order_clause) - << getOpenMPClauseName(AtomicKind); + << getOpenMPClauseNameForDiag(AtomicKind); } } break; @@ -12404,7 +12415,7 @@ StmtResult SemaOpenMP::ActOnOpenMPAtomicDirective(ArrayRef<OMPClause *> Clauses, case OMPC_fail: { if (!EncounteredAtomicKinds.contains(OMPC_compare)) { Diag(C->getBeginLoc(), diag::err_omp_atomic_no_compare) - << getOpenMPClauseName(C->getClauseKind()) + << getOpenMPClauseNameForDiag(C->getClauseKind()) << SourceRange(C->getBeginLoc(), C->getEndLoc()); return StmtError(); } @@ -12420,7 +12431,7 @@ StmtResult SemaOpenMP::ActOnOpenMPAtomicDirective(ArrayRef<OMPClause *> Clauses, << getOpenMPDirectiveName(OMPD_atomic) << 0 << SourceRange(C->getBeginLoc(), C->getEndLoc()); Diag(MemOrderLoc, diag::note_omp_previous_mem_order_clause) - << getOpenMPClauseName(MemOrderKind); + << getOpenMPClauseNameForDiag(MemOrderKind); } else { MemOrderKind = C->getClauseKind(); MemOrderLoc = C->getBeginLoc(); @@ -12456,11 +12467,11 @@ StmtResult SemaOpenMP::ActOnOpenMPAtomicDirective(ArrayRef<OMPClause *> Clauses, if (AtomicKind == OMPC_unknown) Loc = StartLoc; Diag(Loc, diag::err_omp_atomic_incompatible_mem_order_clause) - << getOpenMPClauseName(AtomicKind) + << getOpenMPClauseNameForDiag(AtomicKind) << (AtomicKind == OMPC_unknown ? 1 : 0) - << getOpenMPClauseName(MemOrderKind); + << getOpenMPClauseNameForDiag(MemOrderKind); Diag(MemOrderLoc, diag::note_omp_previous_mem_order_clause) - << getOpenMPClauseName(MemOrderKind); + << getOpenMPClauseNameForDiag(MemOrderKind); } Stmt *Body = AStmt; @@ -13161,7 +13172,7 @@ static bool checkNumExprsInClause(SemaBase &SemaRef, auto VarList = C->getVarRefs(); if (VarList.size() > MaxNum) { SemaRef.Diag(VarList[MaxNum]->getBeginLoc(), Diag) - << getOpenMPClauseName(C->getClauseKind()); + << getOpenMPClauseNameForDiag(C->getClauseKind()); return false; } return true; @@ -15796,7 +15807,7 @@ isNonNegativeIntegerValue(Expr *&ValExpr, Sema &SemaRef, OpenMPClauseKind CKind, !((!StrictlyPositive && Result->isNonNegative()) || (StrictlyPositive && Result->isStrictlyPositive()))) { SemaRef.Diag(Loc, diag::err_omp_negative_expression_in_clause) - << getOpenMPClauseName(CKind) << (StrictlyPositive ? 1 : 0) + << getOpenMPClauseNameForDiag(CKind) << (StrictlyPositive ? 1 : 0) << ValExpr->getSourceRange(); return false; } @@ -15877,7 +15888,7 @@ ExprResult SemaOpenMP::VerifyPositiveIntegerConstantInClause( if ((StrictlyPositive && !Result.isStrictlyPositive()) || (!StrictlyPositive && !Result.isNonNegative())) { Diag(E->getExprLoc(), diag::err_omp_negative_expression_in_clause) - << getOpenMPClauseName(CKind) << (StrictlyPositive ? 1 : 0) + << getOpenMPClauseNameForDiag(CKind) << (StrictlyPositive ? 1 : 0) << E->getSourceRange(); return ExprError(); } @@ -16227,7 +16238,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPDefaultClause(DefaultKind Kind, Diag(KindKwLoc, diag::err_omp_unexpected_clause_value) << getListOfPossibleValues(OMPC_default, /*First=*/0, /*Last=*/unsigned(OMP_DEFAULT_unknown)) - << getOpenMPClauseName(OMPC_default); + << getOpenMPClauseNameForDiag(OMPC_default); return nullptr; } @@ -16266,7 +16277,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPProcBindClause(ProcBindKind Kind, ? OMP_PROC_BIND_primary : OMP_PROC_BIND_spread) + 1) - << getOpenMPClauseName(OMPC_proc_bind); + << getOpenMPClauseNameForDiag(OMPC_proc_bind); return nullptr; } if (Kind == OMP_PROC_BIND_primary && getLangOpts().OpenMP < 51) @@ -16275,7 +16286,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPProcBindClause(ProcBindKind Kind, /*First=*/unsigned(OMP_PROC_BIND_master), /*Last=*/ unsigned(OMP_PROC_BIND_spread) + 1) - << getOpenMPClauseName(OMPC_proc_bind); + << getOpenMPClauseNameForDiag(OMPC_proc_bind); return new (getASTContext()) OMPProcBindClause(Kind, KindKwLoc, StartLoc, LParenLoc, EndLoc); } @@ -16288,7 +16299,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPAtomicDefaultMemOrderClause( << getListOfPossibleValues( OMPC_atomic_default_mem_order, /*First=*/0, /*Last=*/OMPC_ATOMIC_DEFAULT_MEM_ORDER_unknown) - << getOpenMPClauseName(OMPC_atomic_default_mem_order); + << getOpenMPClauseNameForDiag(OMPC_atomic_default_mem_order); return nullptr; } return new (getASTContext()) OMPAtomicDefaultMemOrderClause( @@ -16304,7 +16315,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPAtClause(OpenMPAtClauseKind Kind, Diag(KindKwLoc, diag::err_omp_unexpected_clause_value) << getListOfPossibleValues(OMPC_at, /*First=*/0, /*Last=*/OMPC_AT_unknown) - << getOpenMPClauseName(OMPC_at); + << getOpenMPClauseNameForDiag(OMPC_at); return nullptr; } return new (getASTContext()) @@ -16320,7 +16331,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPSeverityClause(OpenMPSeverityClauseKind Kind, Diag(KindKwLoc, diag::err_omp_unexpected_clause_value) << getListOfPossibleValues(OMPC_severity, /*First=*/0, /*Last=*/OMPC_SEVERITY_unknown) - << getOpenMPClauseName(OMPC_severity); + << getOpenMPClauseNameForDiag(OMPC_severity); return nullptr; } return new (getASTContext()) @@ -16334,7 +16345,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPMessageClause(Expr *ME, assert(ME && "NULL expr in Message clause"); if (!isa<StringLiteral>(ME)) { Diag(ME->getBeginLoc(), diag::warn_clause_expected_string) - << getOpenMPClauseName(OMPC_message); + << getOpenMPClauseNameForDiag(OMPC_message); return nullptr; } return new (getASTContext()) @@ -16356,7 +16367,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPOrderClause( << getListOfPossibleValues(OMPC_order, /*First=*/0, /*Last=*/OMPC_ORDER_unknown) - << getOpenMPClauseName(OMPC_order); + << getOpenMPClauseNameForDiag(OMPC_order); return nullptr; } if (getLangOpts().OpenMP >= 51 && Modifier == OMPC_ORDER_MODIFIER_unknown && @@ -16365,7 +16376,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPOrderClause( << getListOfPossibleValues(OMPC_order, /*First=*/OMPC_ORDER_MODIFIER_unknown + 1, /*Last=*/OMPC_ORDER_MODIFIER_last) - << getOpenMPClauseName(OMPC_order); + << getOpenMPClauseNameForDiag(OMPC_order); } else if (getLangOpts().OpenMP >= 50) { DSAStack->setRegionHasOrderConcurrent(/*HasOrderConcurrent=*/true); if (DSAStack->getCurScope()) { @@ -16394,7 +16405,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPUpdateClause(OpenMPDependClauseKind Kind, Diag(KindKwLoc, diag::err_omp_unexpected_clause_value) << getListOfPossibleValues(OMPC_depend, /*First=*/0, /*Last=*/OMPC_DEPEND_unknown, Except) - << getOpenMPClauseName(OMPC_update); + << getOpenMPClauseNameForDiag(OMPC_update); return nullptr; } return OMPUpdateClause::Create(getASTContext(), StartLoc, LParenLoc, @@ -16689,7 +16700,7 @@ static bool checkScheduleModifiers(Sema &S, OpenMPScheduleClauseModifier M1, /*First=*/OMPC_SCHEDULE_MODIFIER_unknown + 1, /*Last=*/OMPC_SCHEDULE_MODIFIER_last, Excluded) - << getOpenMPClauseName(OMPC_schedule); + << getOpenMPClauseNameForDiag(OMPC_schedule); return true; } return false; @@ -16728,7 +16739,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPScheduleClause( /*Last=*/OMPC_SCHEDULE_unknown); } Diag(KindLoc, diag::err_omp_unexpected_clause_value) - << Values << getOpenMPClauseName(OMPC_schedule); + << Values << getOpenMPClauseNameForDiag(OMPC_schedule); return nullptr; } // OpenMP, 2.7.1, Loop Construct, Restrictions @@ -17254,7 +17265,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPDestroyClause(Expr *InteropVar, if (!InteropVar && getLangOpts().OpenMP >= 52 && DSAStack->getCurrentDirective() == OMPD_depobj) { Diag(StartLoc, diag::err_omp_expected_clause_argument) - << getOpenMPClauseName(OMPC_destroy) + << getOpenMPClauseNameForDiag(OMPC_destroy) << getOpenMPDirectiveName(OMPD_depobj); return nullptr; } @@ -17645,8 +17656,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPPrivateClause(ArrayRef<Expr *> VarList, // the variable's predetermined data-sharing attributes. DSAStackTy::DSAVarData DVar = DSAStack->getTopDSA(D, /*FromParent=*/false); if (DVar.CKind != OMPC_unknown && DVar.CKind != OMPC_private) { - Diag(ELoc, diag::err_omp_wrong_dsa) << getOpenMPClauseName(DVar.CKind) - << getOpenMPClauseName(OMPC_private); + Diag(ELoc, diag::err_omp_wrong_dsa) << getOpenMPClauseNameForDiag(DVar.CKind) + << getOpenMPClauseNameForDiag(OMPC_private); reportOriginalDsa(SemaRef, DSAStack, D, DVar); continue; } @@ -17656,7 +17667,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPPrivateClause(ArrayRef<Expr *> VarList, if (!Type->isAnyPointerType() && Type->isVariablyModifiedType() && isOpenMPTaskingDirective(CurrDir)) { Diag(ELoc, diag::err_omp_variably_modified_type_not_supported) - << getOpenMPClauseName(OMPC_private) << Type + << getOpenMPClauseNameForDiag(OMPC_private) << Type << getOpenMPDirectiveName(CurrDir); bool IsDecl = !VD || VD->isThisDeclarationADefinition(getASTContext()) == VarDecl::DeclarationOnly; @@ -17686,8 +17697,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPPrivateClause(ArrayRef<Expr *> VarList, return true; })) { Diag(ELoc, diag::err_omp_variable_in_given_clause_and_dsa) - << getOpenMPClauseName(OMPC_private) - << getOpenMPClauseName(ConflictKind) + << getOpenMPClauseNameForDiag(OMPC_private) + << getOpenMPClauseNameForDiag(ConflictKind) << getOpenMPDirectiveName(CurrDir); reportOriginalDsa(SemaRef, DSAStack, D, DVar); continue; @@ -17806,8 +17817,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPFirstprivateClause(ArrayRef<Expr *> VarList, DVar.CKind != OMPC_lastprivate) && DVar.RefExpr) { Diag(ELoc, diag::err_omp_wrong_dsa) - << getOpenMPClauseName(DVar.CKind) - << getOpenMPClauseName(OMPC_firstprivate); + << getOpenMPClauseNameForDiag(DVar.CKind) + << getOpenMPClauseNameForDiag(OMPC_firstprivate); reportOriginalDsa(SemaRef, DSAStack, D, DVar); continue; } @@ -17826,8 +17837,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPFirstprivateClause(ArrayRef<Expr *> VarList, if (!(IsConstant || (VD && VD->isStaticDataMember())) && !DVar.RefExpr && DVar.CKind != OMPC_unknown && DVar.CKind != OMPC_shared) { Diag(ELoc, diag::err_omp_wrong_dsa) - << getOpenMPClauseName(DVar.CKind) - << getOpenMPClauseName(OMPC_firstprivate); + << getOpenMPClauseNameForDiag(DVar.CKind) + << getOpenMPClauseNameForDiag(OMPC_firstprivate); reportOriginalDsa(SemaRef, DSAStack, D, DVar); continue; } @@ -17857,8 +17868,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPFirstprivateClause(ArrayRef<Expr *> VarList, isOpenMPTeamsDirective(DVar.DKind) || DVar.DKind == OMPD_unknown)) { Diag(ELoc, diag::err_omp_required_access) - << getOpenMPClauseName(OMPC_firstprivate) - << getOpenMPClauseName(OMPC_shared); + << getOpenMPClauseNameForDiag(OMPC_firstprivate) + << getOpenMPClauseNameForDiag(OMPC_shared); reportOriginalDsa(SemaRef, DSAStack, D, DVar); continue; } @@ -17918,8 +17929,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPFirstprivateClause(ArrayRef<Expr *> VarList, return true; })) { Diag(ELoc, diag::err_omp_variable_in_given_clause_and_dsa) - << getOpenMPClauseName(OMPC_firstprivate) - << getOpenMPClauseName(ConflictKind) + << getOpenMPClauseNameForDiag(OMPC_firstprivate) + << getOpenMPClauseNameForDiag(ConflictKind) << getOpenMPDirectiveName(DSAStack->getCurrentDirective()); reportOriginalDsa(SemaRef, DSAStack, D, DVar); continue; @@ -17931,7 +17942,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPFirstprivateClause(ArrayRef<Expr *> VarList, if (!Type->isAnyPointerType() && Type->isVariablyModifiedType() && isOpenMPTaskingDirective(DSAStack->getCurrentDirective())) { Diag(ELoc, diag::err_omp_variably_modified_type_not_supported) - << getOpenMPClauseName(OMPC_firstprivate) << Type + << getOpenMPClauseNameForDiag(OMPC_firstprivate) << Type << getOpenMPDirectiveName(DSAStack->getCurrentDirective()); bool IsDecl = !VD || VD->isThisDeclarationADefinition(getASTContext()) == VarDecl::DeclarationOnly; @@ -18037,7 +18048,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPLastprivateClause( Diag(LPKindLoc, diag::err_omp_unexpected_clause_value) << getListOfPossibleValues(OMPC_lastprivate, /*First=*/0, /*Last=*/OMPC_LASTPRIVATE_unknown) - << getOpenMPClauseName(OMPC_lastprivate); + << getOpenMPClauseNameForDiag(OMPC_lastprivate); return nullptr; } @@ -18114,8 +18125,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPLastprivateClause( DVar.CKind != OMPC_firstprivate) && (DVar.CKind != OMPC_private || DVar.RefExpr != nullptr)) { Diag(ELoc, diag::err_omp_wrong_dsa) - << getOpenMPClauseName(DVar.CKind) - << getOpenMPClauseName(OMPC_lastprivate); + << getOpenMPClauseNameForDiag(DVar.CKind) + << getOpenMPClauseNameForDiag(OMPC_lastprivate); reportOriginalDsa(SemaRef, DSAStack, D, DVar); continue; } @@ -18133,8 +18144,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPLastprivateClause( DVar = DSAStack->getImplicitDSA(D, true); if (DVar.CKind != OMPC_shared) { Diag(ELoc, diag::err_omp_required_access) - << getOpenMPClauseName(OMPC_lastprivate) - << getOpenMPClauseName(OMPC_shared); + << getOpenMPClauseNameForDiag(OMPC_lastprivate) + << getOpenMPClauseNameForDiag(OMPC_shared); reportOriginalDsa(SemaRef, DSAStack, D, DVar); continue; } @@ -18242,8 +18253,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPSharedClause(ArrayRef<Expr *> VarList, DSAStackTy::DSAVarData DVar = DSAStack->getTopDSA(D, /*FromParent=*/false); if (DVar.CKind != OMPC_unknown && DVar.CKind != OMPC_shared && DVar.RefExpr) { - Diag(ELoc, diag::err_omp_wrong_dsa) << getOpenMPClauseName(DVar.CKind) - << getOpenMPClauseName(OMPC_shared); + Diag(ELoc, diag::err_omp_wrong_dsa) << getOpenMPClauseNameForDiag(DVar.CKind) + << getOpenMPClauseNameForDiag(OMPC_shared); reportOriginalDsa(SemaRef, DSAStack, D, DVar); continue; } @@ -18908,7 +18919,7 @@ static bool actOnOMPReductionKindClause( DSARefChecker Check(Stack); if (Check.Visit(VDDef->getInit())) { S.Diag(ELoc, diag::err_omp_reduction_ref_type_arg) - << getOpenMPClauseName(ClauseKind) << ERange; + << getOpenMPClauseNameForDiag(ClauseKind) << ERange; S.Diag(VDDef->getLocation(), diag::note_defined_here) << VDDef; continue; } @@ -18929,15 +18940,15 @@ static bool actOnOMPReductionKindClause( DSAStackTy::DSAVarData DVar = Stack->getTopDSA(D, /*FromParent=*/false); if (DVar.CKind == OMPC_reduction) { S.Diag(ELoc, diag::err_omp_once_referenced) - << getOpenMPClauseName(ClauseKind); + << getOpenMPClauseNameForDiag(ClauseKind); if (DVar.RefExpr) S.Diag(DVar.RefExpr->getExprLoc(), diag::note_omp_referenced); continue; } if (DVar.CKind != OMPC_unknown) { S.Diag(ELoc, diag::err_omp_wrong_dsa) - << getOpenMPClauseName(DVar.CKind) - << getOpenMPClauseName(OMPC_reduction); + << getOpenMPClauseNameForDiag(DVar.CKind) + << getOpenMPClauseNameForDiag(OMPC_reduction); reportOriginalDsa(S, Stack, D, DVar); continue; } @@ -18974,8 +18985,8 @@ static bool actOnOMPReductionKindClause( DVar = Stack->getImplicitDSA(D, true); if (DVar.CKind != OMPC_shared) { S.Diag(ELoc, diag::err_omp_required_access) - << getOpenMPClauseName(OMPC_reduction) - << getOpenMPClauseName(OMPC_shared); + << getOpenMPClauseNameForDiag(OMPC_reduction) + << getOpenMPClauseNameForDiag(OMPC_shared); reportOriginalDsa(S, Stack, D, DVar); continue; } @@ -18986,8 +18997,8 @@ static bool actOnOMPReductionKindClause( DSAStackTy::DSAVarData DVar = Stack->getTopDSA(D, /*FromParent=*/false); if (DVar.CKind == OMPC_threadprivate) { S.Diag(ELoc, diag::err_omp_wrong_dsa) - << getOpenMPClauseName(DVar.CKind) - << getOpenMPClauseName(OMPC_reduction); + << getOpenMPClauseNameForDiag(DVar.CKind) + << getOpenMPClauseNameForDiag(OMPC_reduction); reportOriginalDsa(S, Stack, D, DVar); continue; } @@ -19033,7 +19044,7 @@ static bool actOnOMPReductionKindClause( !(Type->isScalarType() || (S.getLangOpts().CPlusPlus && Type->isArithmeticType()))) { S.Diag(ELoc, diag::err_omp_clause_not_arithmetic_type_arg) - << getOpenMPClauseName(ClauseKind) << S.getLangOpts().CPlusPlus; + << getOpenMPClauseNameForDiag(ClauseKind) << S.getLangOpts().CPlusPlus; if (!ASE && !OASE) { bool IsDecl = !VD || VD->isThisDeclarationADefinition(Context) == VarDecl::DeclarationOnly; @@ -19046,7 +19057,7 @@ static bool actOnOMPReductionKindClause( if ((BOK == BO_OrAssign || BOK == BO_AndAssign || BOK == BO_XorAssign) && !S.getLangOpts().CPlusPlus && Type->isFloatingType()) { S.Diag(ELoc, diag::err_omp_clause_floating_type_arg) - << getOpenMPClauseName(ClauseKind); + << getOpenMPClauseNameForDiag(ClauseKind); if (!ASE && !OASE) { bool IsDecl = !VD || VD->isThisDeclarationADefinition(Context) == VarDecl::DeclarationOnly; @@ -19485,7 +19496,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPReductionClause( Diag(LParenLoc, diag::err_omp_unexpected_clause_value) << getListOfPossibleValues(OMPC_reduction, /*First=*/0, /*Last=*/OMPC_REDUCTION_unknown) - << getOpenMPClauseName(OMPC_reduction); + << getOpenMPClauseNameForDiag(OMPC_reduction); return nullptr; } // OpenMP 5.0, 2.19.5.4 reduction Clause, Restrictions @@ -19657,8 +19668,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPLinearClause( // other data-sharing attribute clause. DSAStackTy::DSAVarData DVar = DSAStack->getTopDSA(D, /*FromParent=*/false); if (DVar.RefExpr) { - Diag(ELoc, diag::err_omp_wrong_dsa) << getOpenMPClauseName(DVar.CKind) - << getOpenMPClauseName(OMPC_linear); + Diag(ELoc, diag::err_omp_wrong_dsa) << getOpenMPClauseNameForDiag(DVar.CKind) + << getOpenMPClauseNameForDiag(OMPC_linear); reportOriginalDsa(SemaRef, DSAStack, D, DVar); continue; } @@ -19901,9 +19912,9 @@ OMPClause *SemaOpenMP::ActOnOpenMPAlignedClause( // A list-item cannot appear in more than one aligned clause. if (const Expr *PrevRef = DSAStack->addUniqueAligned(D, SimpleRefExpr)) { Diag(ELoc, diag::err_omp_used_in_clause_twice) - << 0 << getOpenMPClauseName(OMPC_aligned) << ERange; + << 0 << getOpenMPClauseNameForDiag(OMPC_aligned) << ERange; Diag(PrevRef->getExprLoc(), diag::note_omp_explicit_dsa) - << getOpenMPClauseName(OMPC_aligned); + << getOpenMPClauseNameForDiag(OMPC_aligned); continue; } @@ -19983,7 +19994,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPCopyinClause(ArrayRef<Expr *> VarList, // A list item that appears in a copyin clause must be threadprivate. if (!DSAStack->isThreadPrivate(VD)) { Diag(ELoc, diag::err_omp_required_access) - << getOpenMPClauseName(OMPC_copyin) + << getOpenMPClauseNameForDiag(OMPC_copyin) << getOpenMPDirectiveName(OMPD_threadprivate); continue; } @@ -20068,8 +20079,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPCopyprivateClause(ArrayRef<Expr *> VarList, if (DVar.CKind != OMPC_unknown && DVar.CKind != OMPC_copyprivate && DVar.RefExpr) { Diag(ELoc, diag::err_omp_wrong_dsa) - << getOpenMPClauseName(DVar.CKind) - << getOpenMPClauseName(OMPC_copyprivate); + << getOpenMPClauseNameForDiag(DVar.CKind) + << getOpenMPClauseNameForDiag(OMPC_copyprivate); reportOriginalDsa(SemaRef, DSAStack, D, DVar); continue; } @@ -20081,7 +20092,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPCopyprivateClause(ArrayRef<Expr *> VarList, DVar = DSAStack->getImplicitDSA(D, false); if (DVar.CKind == OMPC_shared) { Diag(ELoc, diag::err_omp_required_access) - << getOpenMPClauseName(OMPC_copyprivate) + << getOpenMPClauseNameForDiag(OMPC_copyprivate) << "threadprivate or private in the enclosing context"; reportOriginalDsa(SemaRef, DSAStack, D, DVar); continue; @@ -20092,7 +20103,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPCopyprivateClause(ArrayRef<Expr *> VarList, // Variably modified types are not supported. if (!Type->isAnyPointerType() && Type->isVariablyModifiedType()) { Diag(ELoc, diag::err_omp_variably_modified_type_not_supported) - << getOpenMPClauseName(OMPC_copyprivate) << Type + << getOpenMPClauseNameForDiag(OMPC_copyprivate) << Type << getOpenMPDirectiveName(DSAStack->getCurrentDirective()); bool IsDecl = !VD || VD->isThisDeclarationADefinition(getASTContext()) == VarDecl::DeclarationOnly; @@ -20342,7 +20353,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPDependClause( if (DSAStack->getCurrentDirective() == OMPD_ordered && DepKind != OMPC_DEPEND_source && DepKind != OMPC_DEPEND_sink) { Diag(DepLoc, diag::err_omp_unexpected_clause_value) - << "'source' or 'sink'" << getOpenMPClauseName(OMPC_depend); + << "'source' or 'sink'" << getOpenMPClauseNameForDiag(OMPC_depend); return nullptr; } if (DSAStack->getCurrentDirective() == OMPD_taskwait && @@ -20372,7 +20383,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPDependClause( << Expected + getListOfPossibleValues(OMPC_depend, /*First=*/0, /*Last=*/OMPC_DEPEND_unknown, Except) - << getOpenMPClauseName(OMPC_depend); + << getOpenMPClauseNameForDiag(OMPC_depend); return nullptr; } if (DepModifier && @@ -20538,7 +20549,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPDeviceClause( std::string Values = getListOfPossibleValues(OMPC_device, /*First=*/0, OMPC_DEVICE_unknown); Diag(ModifierLoc, diag::err_omp_unexpected_clause_value) - << Values << getOpenMPClauseName(OMPC_device); + << Values << getOpenMPClauseNameForDiag(OMPC_device); ErrorFound = true; } @@ -20744,7 +20755,7 @@ class MapBaseChecker final : public StmtVisitor<MapBaseChecker, bool> { << ERange; } else { SemaRef.Diag(ELoc, diag::err_omp_non_lvalue_in_map_or_motion_clauses) - << getOpenMPClauseName(CKind) << ERange; + << getOpenMPClauseNameForDiag(CKind) << ERange; } } @@ -20792,7 +20803,7 @@ class MapBaseChecker final : public StmtVisitor<MapBaseChecker, bool> { if (FD->isBitField()) { if (!NoDiagnose) { SemaRef.Diag(ELoc, diag::err_omp_bit_fields_forbidden_in_clause) - << ME->getSourceRange() << getOpenMPClauseName(CKind); + << ME->getSourceRange() << getOpenMPClauseNameForDiag(CKind); return false; } if (RelevantExpr) @@ -21733,7 +21744,7 @@ static void checkMappableExpressionList( << RE->getSourceRange(); } else { SemaRef.Diag(ELoc, diag::err_omp_non_lvalue_in_map_or_motion_clauses) - << getOpenMPClauseName(CKind) << RE->getSourceRange(); + << getOpenMPClauseNameForDiag(CKind) << RE->getSourceRange(); } continue; } @@ -21795,7 +21806,7 @@ static void checkMappableExpressionList( continue; DSAStackTy::DSAVarData DVar = DSAS->getTopDSA(VD, /*FromParent=*/false); SemaRef.Diag(ELoc, diag::err_omp_threadprivate_in_clause) - << getOpenMPClauseName(CKind); + << getOpenMPClauseNameForDiag(CKind); reportOriginalDsa(SemaRef, DSAS, VD, DVar); continue; } @@ -21932,8 +21943,8 @@ static void checkMappableExpressionList( DSAStackTy::DSAVarData DVar = DSAS->getTopDSA(VD, /*FromParent=*/false); if (isOpenMPPrivate(DVar.CKind)) { SemaRef.Diag(ELoc, diag::err_omp_variable_in_given_clause_and_dsa) - << getOpenMPClauseName(DVar.CKind) - << getOpenMPClauseName(OMPC_map) + << getOpenMPClauseNameForDiag(DVar.CKind) + << getOpenMPClauseNameForDiag(OMPC_map) << getOpenMPDirectiveName(DSAS->getCurrentDirective()); reportOriginalDsa(SemaRef, DSAS, CurDeclaration, DVar); continue; @@ -22556,7 +22567,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPGrainsizeClause( std::string Values = getListOfPossibleValues(OMPC_grainsize, /*First=*/0, OMPC_GRAINSIZE_unknown); Diag(ModifierLoc, diag::err_omp_unexpected_clause_value) - << Values << getOpenMPClauseName(OMPC_grainsize); + << Values << getOpenMPClauseNameForDiag(OMPC_grainsize); return nullptr; } @@ -22590,7 +22601,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPNumTasksClause( std::string Values = getListOfPossibleValues(OMPC_num_tasks, /*First=*/0, OMPC_NUMTASKS_unknown); Diag(ModifierLoc, diag::err_omp_unexpected_clause_value) - << Values << getOpenMPClauseName(OMPC_num_tasks); + << Values << getOpenMPClauseNameForDiag(OMPC_num_tasks); return nullptr; } @@ -22681,8 +22692,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPDetachClause(Expr *Evt, if (DVar.CKind != OMPC_unknown && DVar.CKind != OMPC_firstprivate && DVar.RefExpr) { Diag(Evt->getExprLoc(), diag::err_omp_wrong_dsa) - << getOpenMPClauseName(DVar.CKind) - << getOpenMPClauseName(OMPC_firstprivate); + << getOpenMPClauseNameForDiag(DVar.CKind) + << getOpenMPClauseNameForDiag(OMPC_firstprivate); reportOriginalDsa(SemaRef, DSAStack, VD, DVar); return nullptr; } @@ -22702,7 +22713,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPDistScheduleClause( Values += getOpenMPSimpleClauseTypeName(OMPC_dist_schedule, 0); Values += "'"; Diag(KindLoc, diag::err_omp_unexpected_clause_value) - << Values << getOpenMPClauseName(OMPC_dist_schedule); + << Values << getOpenMPClauseNameForDiag(OMPC_dist_schedule); return nullptr; } Expr *ValExpr = ChunkSize; @@ -22767,7 +22778,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPDefaultmapClause( } Value += "'"; Diag(Loc, diag::err_omp_unexpected_clause_value) - << Value << getOpenMPClauseName(OMPC_defaultmap); + << Value << getOpenMPClauseNameForDiag(OMPC_defaultmap); return nullptr; } } else { @@ -22783,15 +22794,15 @@ OMPClause *SemaOpenMP::ActOnOpenMPDefaultmapClause( "'firstprivate', 'none', 'default'"; if (!isDefaultmapKind && isDefaultmapModifier) { Diag(KindLoc, diag::err_omp_unexpected_clause_value) - << KindValue << getOpenMPClauseName(OMPC_defaultmap); + << KindValue << getOpenMPClauseNameForDiag(OMPC_defaultmap); } else if (isDefaultmapKind && !isDefaultmapModifier) { Diag(MLoc, diag::err_omp_unexpected_clause_value) - << ModifierValue << getOpenMPClauseName(OMPC_defaultmap); + << ModifierValue << getOpenMPClauseNameForDiag(OMPC_defaultmap); } else { Diag(MLoc, diag::err_omp_unexpected_clause_value) - << ModifierValue << getOpenMPClauseName(OMPC_defaultmap); + << ModifierValue << getOpenMPClauseNameForDiag(OMPC_defaultmap); Diag(KindLoc, diag::err_omp_unexpected_clause_value) - << KindValue << getOpenMPClauseName(OMPC_defaultmap); + << KindValue << getOpenMPClauseNameForDiag(OMPC_defaultmap); } } else { StringRef ModifierValue = @@ -22799,15 +22810,15 @@ OMPClause *SemaOpenMP::ActOnOpenMPDefaultmapClause( "'firstprivate', 'none', 'default', 'present'"; if (!isDefaultmapKind && isDefaultmapModifier) { Diag(KindLoc, diag::err_omp_unexpected_clause_value) - << KindValue << getOpenMPClauseName(OMPC_defaultmap); + << KindValue << getOpenMPClauseNameForDiag(OMPC_defaultmap); } else if (isDefaultmapKind && !isDefaultmapModifier) { Diag(MLoc, diag::err_omp_unexpected_clause_value) - << ModifierValue << getOpenMPClauseName(OMPC_defaultmap); + << ModifierValue << getOpenMPClauseNameForDiag(OMPC_defaultmap); } else { Diag(MLoc, diag::err_omp_unexpected_clause_value) - << ModifierValue << getOpenMPClauseName(OMPC_defaultmap); + << ModifierValue << getOpenMPClauseNameForDiag(OMPC_defaultmap); Diag(KindLoc, diag::err_omp_unexpected_clause_value) - << KindValue << getOpenMPClauseName(OMPC_defaultmap); + << KindValue << getOpenMPClauseNameForDiag(OMPC_defaultmap); } } return nullptr; @@ -23390,8 +23401,8 @@ SemaOpenMP::ActOnOpenMPIsDevicePtrClause(ArrayRef<Expr *> VarList, DSAStackTy::DSAVarData DVar = DSAStack->getTopDSA(D, /*FromParent=*/false); if (isOpenMPPrivate(DVar.CKind)) { Diag(ELoc, diag::err_omp_variable_in_given_clause_and_dsa) - << getOpenMPClauseName(DVar.CKind) - << getOpenMPClauseName(OMPC_is_device_ptr) + << getOpenMPClauseNameForDiag(DVar.CKind) + << getOpenMPClauseNameForDiag(OMPC_is_device_ptr) << getOpenMPDirectiveName(DSAStack->getCurrentDirective()); reportOriginalDsa(SemaRef, DSAStack, D, DVar); continue; @@ -23466,8 +23477,8 @@ SemaOpenMP::ActOnOpenMPHasDeviceAddrClause(ArrayRef<Expr *> VarList, DSAStackTy::DSAVarData DVar = DSAStack->getTopDSA(D, /*FromParent=*/false); if (isOpenMPPrivate(DVar.CKind)) { Diag(ELoc, diag::err_omp_variable_in_given_clause_and_dsa) - << getOpenMPClauseName(DVar.CKind) - << getOpenMPClauseName(OMPC_has_device_addr) + << getOpenMPClauseNameForDiag(DVar.CKind) + << getOpenMPClauseNameForDiag(OMPC_has_device_addr) << getOpenMPDirectiveName(DSAStack->getCurrentDirective()); reportOriginalDsa(SemaRef, DSAStack, D, DVar); continue; @@ -23643,9 +23654,9 @@ OMPClause *SemaOpenMP::ActOnOpenMPNontemporalClause(ArrayRef<Expr *> VarList, if (const Expr *PrevRef = DSAStack->addUniqueNontemporal(D, SimpleRefExpr)) { Diag(ELoc, diag::err_omp_used_in_clause_twice) - << 0 << getOpenMPClauseName(OMPC_nontemporal) << ERange; + << 0 << getOpenMPClauseNameForDiag(OMPC_nontemporal) << ERange; Diag(PrevRef->getExprLoc(), diag::note_omp_explicit_dsa) - << getOpenMPClauseName(OMPC_nontemporal); + << getOpenMPClauseNameForDiag(OMPC_nontemporal); continue; } @@ -23955,7 +23966,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPBindClause(OpenMPBindClauseKind Kind, Diag(KindLoc, diag::err_omp_unexpected_clause_value) << getListOfPossibleValues(OMPC_bind, /*First=*/0, /*Last=*/unsigned(OMPC_BIND_unknown)) - << getOpenMPClauseName(OMPC_bind); + << getOpenMPClauseNameForDiag(OMPC_bind); return nullptr; } @@ -24002,7 +24013,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPDoacrossClause( DepType != OMPC_DOACROSS_sink_omp_cur_iteration && DepType != OMPC_DOACROSS_source_omp_cur_iteration) { Diag(DepLoc, diag::err_omp_unexpected_clause_value) - << "'source' or 'sink'" << getOpenMPClauseName(OMPC_doacross); + << "'source' or 'sink'" << getOpenMPClauseNameForDiag(OMPC_doacross); return nullptr; } diff --git a/llvm/include/llvm/Frontend/Directive/DirectiveBase.td b/llvm/include/llvm/Frontend/Directive/DirectiveBase.td index 912ba15a6aa5a..4faea18324cb7 100644 --- a/llvm/include/llvm/Frontend/Directive/DirectiveBase.td +++ b/llvm/include/llvm/Frontend/Directive/DirectiveBase.td @@ -71,9 +71,6 @@ class Clause<string c> { // Name of the clause. string name = c; - // Define an alternative name return in get<LanguageName>ClauseName function. - string alternativeName = ""; - // Define aliases used in the parser. list<string> aliases = []; @@ -180,10 +177,6 @@ class Directive<string d> { // Name of the directive. Can be composite directive sepearted by whitespace. string name = d; - // Define an alternative name return in get<LanguageName>DirectiveName - // function. - string alternativeName = ""; - // Clauses cannot appear twice in the three allowed lists below. Also, since // required implies allowed, the same clause cannot appear in both the // allowedClauses and requiredClauses lists. diff --git a/llvm/include/llvm/Frontend/OpenMP/OMP.td b/llvm/include/llvm/Frontend/OpenMP/OMP.td index cdfd3e3223fa8..a9e9b9a8d7caf 100644 --- a/llvm/include/llvm/Frontend/OpenMP/OMP.td +++ b/llvm/include/llvm/Frontend/OpenMP/OMP.td @@ -492,7 +492,6 @@ def OMPC_ThreadLimit : Clause<"thread_limit"> { let flangClass = "ScalarIntExpr"; } def OMPC_ThreadPrivate : Clause<"threadprivate"> { - let alternativeName = "threadprivate or thread local"; let isImplicit = true; } def OMPC_Threads : Clause<"threads"> { diff --git a/llvm/include/llvm/TableGen/DirectiveEmitter.h b/llvm/include/llvm/TableGen/DirectiveEmitter.h index 4b21ad6342b59..e7f712451d482 100644 --- a/llvm/include/llvm/TableGen/DirectiveEmitter.h +++ b/llvm/include/llvm/TableGen/DirectiveEmitter.h @@ -107,10 +107,6 @@ class BaseRecord { StringRef getName() const { return Def->getValueAsString("name"); } - StringRef getAlternativeName() const { - return Def->getValueAsString("alternativeName"); - } - // Returns the name of the directive formatted for output. Whitespace are // replaced with underscores. std::string getFormattedName() const { diff --git a/llvm/utils/TableGen/Basic/DirectiveEmitter.cpp b/llvm/utils/TableGen/Basic/DirectiveEmitter.cpp index 96ba89d0e78cd..9a0f647f75ad5 100644 --- a/llvm/utils/TableGen/Basic/DirectiveEmitter.cpp +++ b/llvm/utils/TableGen/Basic/DirectiveEmitter.cpp @@ -286,12 +286,7 @@ static void generateGetName(ArrayRef<const Record *> Records, raw_ostream &OS, OS << " switch (Kind) {\n"; for (const BaseRecord Rec : Records) { OS << " case " << Prefix << Rec.getFormattedName() << ":\n"; - OS << " return \""; - if (Rec.getAlternativeName().empty()) - OS << Rec.getName(); - else - OS << Rec.getAlternativeName(); - OS << "\";\n"; + OS << " return \"" << Rec.getName() << "\";\n"; } OS << " }\n"; // switch OS << " llvm_unreachable(\"Invalid " << DirLang.getName() << " " << Enum _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits