diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 274d3b90ff30f..fffff15a0a77e 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(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(D); bool IsDecl = !VD || VD->isThisDeclarationADefinition(Context) == @@ -3587,7 +3595,7 @@ SemaOpenMP::CheckOMPRequiresDecl(SourceLocation Loc, isa(CNew) || isa(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(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(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,22 @@ 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,12 +6866,13 @@ SemaOpenMP::DeclGroupPtrTy SemaOpenMP::ActOnOpenMPDeclareSimdDirective( if (isa(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 - : OMPC_linear); + << getOpenMPClauseNameForDiag(IsUniformedThis ? OMPC_uniform + : OMPC_linear); continue; } UniformedLinearThis = E; @@ -7549,10 +7562,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 +9140,9 @@ 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 +10998,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 +11127,7 @@ StmtResult SemaOpenMP::ActOnOpenMPFlushDirective(ArrayRef 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 +11136,9 @@ StmtResult SemaOpenMP::ActOnOpenMPFlushDirective(ArrayRef 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 +11221,8 @@ SemaOpenMP::ActOnOpenMPOrderedDirective(ArrayRef 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 +11265,17 @@ SemaOpenMP::ActOnOpenMPOrderedDirective(ArrayRef 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 +12404,7 @@ StmtResult SemaOpenMP::ActOnOpenMPAtomicDirective(ArrayRef 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 +12412,7 @@ StmtResult SemaOpenMP::ActOnOpenMPAtomicDirective(ArrayRef 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 +12421,7 @@ StmtResult SemaOpenMP::ActOnOpenMPAtomicDirective(ArrayRef 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 +12437,7 @@ StmtResult SemaOpenMP::ActOnOpenMPAtomicDirective(ArrayRef 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 +12473,11 @@ StmtResult SemaOpenMP::ActOnOpenMPAtomicDirective(ArrayRef 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 +13178,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 +15813,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 +15894,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 +16244,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 +16283,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 +16292,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 +16305,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 +16321,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 +16337,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 +16351,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPMessageClause(Expr *ME, assert(ME && "NULL expr in Message clause"); if (!isa(ME)) { Diag(ME->getBeginLoc(), diag::warn_clause_expected_string) - << getOpenMPClauseName(OMPC_message); + << getOpenMPClauseNameForDiag(OMPC_message); return nullptr; } return new (getASTContext()) @@ -16356,7 +16373,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 +16382,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 +16411,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 +16706,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 +16745,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 +17271,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 +17662,9 @@ OMPClause *SemaOpenMP::ActOnOpenMPPrivateClause(ArrayRef 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 +17674,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPPrivateClause(ArrayRef 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 +17704,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPPrivateClause(ArrayRef 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 +17824,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPFirstprivateClause(ArrayRef 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 +17844,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPFirstprivateClause(ArrayRef 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 +17875,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPFirstprivateClause(ArrayRef 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 +17936,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPFirstprivateClause(ArrayRef 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 +17949,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPFirstprivateClause(ArrayRef 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 +18055,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 +18132,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 +18151,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 +18260,9 @@ OMPClause *SemaOpenMP::ActOnOpenMPSharedClause(ArrayRef 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 +18927,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 +18948,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 +18993,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 +19005,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 +19052,8 @@ 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 +19066,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 +19505,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 +19677,9 @@ 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 +19922,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 +20004,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPCopyinClause(ArrayRef 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 +20089,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPCopyprivateClause(ArrayRef 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 +20102,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPCopyprivateClause(ArrayRef 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 +20113,7 @@ OMPClause *SemaOpenMP::ActOnOpenMPCopyprivateClause(ArrayRef 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 +20363,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 +20393,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 +20559,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 +20765,7 @@ class MapBaseChecker final : public StmtVisitor { << ERange; } else { SemaRef.Diag(ELoc, diag::err_omp_non_lvalue_in_map_or_motion_clauses) - << getOpenMPClauseName(CKind) << ERange; + << getOpenMPClauseNameForDiag(CKind) << ERange; } } @@ -20792,7 +20813,7 @@ class MapBaseChecker final : public StmtVisitor { 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 +21754,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 +21816,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 +21953,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 +22577,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 +22611,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 +22702,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 +22723,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 +22788,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 +22804,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 +22820,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 +23411,8 @@ SemaOpenMP::ActOnOpenMPIsDevicePtrClause(ArrayRef 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 +23487,8 @@ SemaOpenMP::ActOnOpenMPHasDeviceAddrClause(ArrayRef 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 +23664,9 @@ OMPClause *SemaOpenMP::ActOnOpenMPNontemporalClause(ArrayRef 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 +23976,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 +24023,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 { // Name of the clause. string name = c; - // Define an alternative name return in getClauseName function. - string alternativeName = ""; - // Define aliases used in the parser. list aliases = []; @@ -180,10 +177,6 @@ class Directive { // Name of the directive. Can be composite directive sepearted by whitespace. string name = d; - // Define an alternative name return in getDirectiveName - // 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 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