From: Alexey Bataev Date: Wed, 28 May 2014 05:53:51 +0000 (+0000) Subject: [OPENMP][C++11] Formatting and make more C++11 compliant of OpenMP sema. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2c692c3166dd5d2f667c06cd0b0d47fbea391aa6;p=clang [OPENMP][C++11] Formatting and make more C++11 compliant of OpenMP sema. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209713 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaOpenMP.cpp b/lib/Sema/SemaOpenMP.cpp index 39ec632735..603dd56c4f 100644 --- a/lib/Sema/SemaOpenMP.cpp +++ b/lib/Sema/SemaOpenMP.cpp @@ -35,9 +35,9 @@ using namespace clang; namespace { /// \brief Default data sharing attributes, which can be applied to directive. enum DefaultDataSharingAttributes { - DSA_unspecified = 0, /// \brief Data sharing attribute not specified. - DSA_none = 1 << 0, /// \brief Default data sharing attribute 'none'. - DSA_shared = 1 << 1 /// \brief Default data sharing attribute 'shared'. + DSA_unspecified = 0, /// \brief Data sharing attribute not specified. + DSA_none = 1 << 0, /// \brief Default data sharing attribute 'none'. + DSA_shared = 1 << 1 /// \brief Default data sharing attribute 'shared'. }; /// \brief Stack for tracking declarations used in OpenMP directives and @@ -50,6 +50,7 @@ public: DeclRefExpr *RefExpr; DSAVarData() : DKind(OMPD_unknown), CKind(OMPC_unknown), RefExpr(nullptr) {} }; + private: struct DSAInfo { OpenMPClauseKind Attributes; @@ -63,10 +64,10 @@ private: OpenMPDirectiveKind Directive; DeclarationNameInfo DirectiveName; Scope *CurScope; - SharingMapTy(OpenMPDirectiveKind DKind, const DeclarationNameInfo &Name, + SharingMapTy(OpenMPDirectiveKind DKind, DeclarationNameInfo Name, Scope *CurScope) : SharingMap(), DefaultAttr(DSA_unspecified), Directive(DKind), - DirectiveName(Name), CurScope(CurScope) {} + DirectiveName(std::move(Name)), CurScope(CurScope) {} SharingMapTy() : SharingMap(), DefaultAttr(DSA_unspecified), Directive(OMPD_unknown), DirectiveName(), CurScope(nullptr) {} @@ -84,8 +85,9 @@ private: /// \brief Checks if the variable is a local for OpenMP region. bool isOpenMPLocal(VarDecl *D, StackTy::reverse_iterator Iter); + public: - explicit DSAStackTy(Sema &S) : Stack(1), Actions(S) { } + explicit DSAStackTy(Sema &S) : Stack(1), Actions(S) {} void push(OpenMPDirectiveKind DKind, const DeclarationNameInfo &DirName, Scope *CurScope) { @@ -133,7 +135,7 @@ public: Scope *getCurScope() const { return Stack.back().CurScope; } Scope *getCurScope() { return Stack.back().CurScope; } }; -} // end anonymous namespace. +} // namespace DSAStackTy::DSAVarData DSAStackTy::getDSA(StackTy::reverse_iterator Iter, VarDecl *D) { @@ -165,8 +167,7 @@ DSAStackTy::DSAVarData DSAStackTy::getDSA(StackTy::reverse_iterator Iter, // inside the construct are private. if (DVar.DKind != OMPD_parallel) { if (isOpenMPLocal(D, Iter) && D->isLocalVarDecl() && - (D->getStorageClass() == SC_Auto || - D->getStorageClass() == SC_None)) { + (D->getStorageClass() == SC_Auto || D->getStorageClass() == SC_None)) { DVar.CKind = OMPC_private; return DVar; } @@ -211,7 +212,8 @@ DSAStackTy::DSAVarData DSAStackTy::getDSA(StackTy::reverse_iterator Iter, for (StackTy::reverse_iterator I = std::next(Iter), EE = std::prev(Stack.rend()); I != EE; ++I) { - // OpenMP [2.9.1.1, Data-sharing Attribute Rules for Variables Referenced + // OpenMP [2.9.1.1, Data-sharing Attribute Rules for Variables + // Referenced // in a Construct, implicitly determined, p.6] // In a task construct, if no default clause is present, a variable // whose data-sharing attribute is not determined by the rules above is @@ -223,11 +225,12 @@ DSAStackTy::DSAVarData DSAStackTy::getDSA(StackTy::reverse_iterator Iter, DVar.CKind = OMPC_firstprivate; return DVar; } - if (I->Directive == OMPD_parallel) break; + if (I->Directive == OMPD_parallel) + break; } DVar.DKind = OMPD_task; DVar.CKind = - (DVarTemp.CKind == OMPC_unknown) ? OMPC_firstprivate : OMPC_shared; + (DVarTemp.CKind == OMPC_unknown) ? OMPC_firstprivate : OMPC_shared; return DVar; } } @@ -250,15 +253,15 @@ void DSAStackTy::addDSA(VarDecl *D, DeclRefExpr *E, OpenMPClauseKind A) { } } -bool -DSAStackTy::isOpenMPLocal(VarDecl *D, StackTy::reverse_iterator Iter) { +bool DSAStackTy::isOpenMPLocal(VarDecl *D, StackTy::reverse_iterator Iter) { if (Stack.size() > 2) { reverse_iterator I = Iter, E = Stack.rend() - 1; Scope *TopScope = nullptr; while (I != E && I->Directive != OMPD_parallel) { ++I; } - if (I == E) return false; + if (I == E) + return false; TopScope = I->CurScope ? I->CurScope->getParent() : nullptr; Scope *CurScope = getCurScope(); while (CurScope != TopScope && !CurScope->isDeclScope(D)) { @@ -292,8 +295,7 @@ DSAStackTy::DSAVarData DSAStackTy::getTopDSA(VarDecl *D) { OpenMPDirectiveKind Kind = getCurrentDirective(); if (Kind != OMPD_parallel) { if (isOpenMPLocal(D, std::next(Stack.rbegin())) && D->isLocalVarDecl() && - (D->getStorageClass() == SC_Auto || - D->getStorageClass() == SC_None)) { + (D->getStorageClass() == SC_Auto || D->getStorageClass() == SC_None)) { DVar.CKind = OMPC_private; return DVar; } @@ -303,7 +305,8 @@ DSAStackTy::DSAVarData DSAStackTy::getTopDSA(VarDecl *D) { // in a Construct, C/C++, predetermined, p.4] // Static data memebers are shared. if (D->isStaticDataMember()) { - // Variables with const-qualified type having no mutable member may be listed + // Variables with const-qualified type having no mutable member may be + // listed // in a firstprivate clause, even if they are static data members. DSAVarData DVarTemp = hasDSA(D, OMPC_firstprivate); if (DVarTemp.CKind == OMPC_firstprivate && DVarTemp.RefExpr) @@ -365,7 +368,8 @@ DSAStackTy::DSAVarData DSAStackTy::hasDSA(VarDecl *D, OpenMPClauseKind CKind, for (StackTy::reverse_iterator I = std::next(Stack.rbegin()), E = std::prev(Stack.rend()); I != E; ++I) { - if (DKind != OMPD_unknown && DKind != I->Directive) continue; + if (DKind != OMPD_unknown && DKind != I->Directive) + continue; DSAVarData DVar = getDSA(I, D); if (DVar.CKind == CKind) return DVar; @@ -379,9 +383,7 @@ void Sema::InitDataSharingAttributesStack() { #define DSAStack static_cast(VarDataSharingAttributesStack) -void Sema::DestroyDataSharingAttributesStack() { - delete DSAStack; -} +void Sema::DestroyDataSharingAttributesStack() { delete DSAStack; } void Sema::StartOpenMPDSABlock(OpenMPDirectiveKind DKind, const DeclarationNameInfo &DirName, @@ -401,8 +403,9 @@ namespace { class VarDeclFilterCCC : public CorrectionCandidateCallback { private: Sema &Actions; + public: - VarDeclFilterCCC(Sema &S) : Actions(S) { } + VarDeclFilterCCC(Sema &S) : Actions(S) {} bool ValidateCandidate(const TypoCorrection &Candidate) override { NamedDecl *ND = Candidate.getCorrectionDecl(); if (VarDecl *VD = dyn_cast_or_null(ND)) { @@ -413,7 +416,7 @@ public: return false; } }; -} +} // namespace ExprResult Sema::ActOnOpenMPIdExpression(Scope *CurScope, CXXScopeSpec &ScopeSpec, @@ -444,8 +447,7 @@ ExprResult Sema::ActOnOpenMPIdExpression(Scope *CurScope, } } else { if (!(VD = Lookup.getAsSingle())) { - Diag(Id.getLoc(), diag::err_omp_expected_var_arg) - << Id.getName(); + Diag(Id.getLoc(), diag::err_omp_expected_var_arg) << Id.getName(); Diag(Lookup.getFoundDecl()->getLocation(), diag::note_declared_at); return ExprError(); } @@ -456,12 +458,12 @@ ExprResult Sema::ActOnOpenMPIdExpression(Scope *CurScope, // Variables must be file-scope, namespace-scope, or static block-scope. if (!VD->hasGlobalStorage()) { Diag(Id.getLoc(), diag::err_omp_global_var_arg) - << getOpenMPDirectiveName(OMPD_threadprivate) - << !VD->isStaticLocal(); - bool IsDecl = VD->isThisDeclarationADefinition(Context) == - VarDecl::DeclarationOnly; + << getOpenMPDirectiveName(OMPD_threadprivate) << !VD->isStaticLocal(); + bool IsDecl = + VD->isThisDeclarationADefinition(Context) == VarDecl::DeclarationOnly; Diag(VD->getLocation(), - IsDecl ? diag::note_previous_decl : diag::note_defined_here) << VD; + IsDecl ? diag::note_previous_decl : diag::note_defined_here) + << VD; return ExprError(); } @@ -473,11 +475,12 @@ ExprResult Sema::ActOnOpenMPIdExpression(Scope *CurScope, if (CanonicalVD->getDeclContext()->isTranslationUnit() && !getCurLexicalContext()->isTranslationUnit()) { Diag(Id.getLoc(), diag::err_omp_var_scope) - << getOpenMPDirectiveName(OMPD_threadprivate) << VD; - bool IsDecl = VD->isThisDeclarationADefinition(Context) == - VarDecl::DeclarationOnly; - Diag(VD->getLocation(), IsDecl ? diag::note_previous_decl : - diag::note_defined_here) << VD; + << getOpenMPDirectiveName(OMPD_threadprivate) << VD; + bool IsDecl = + VD->isThisDeclarationADefinition(Context) == VarDecl::DeclarationOnly; + Diag(VD->getLocation(), + IsDecl ? diag::note_previous_decl : diag::note_defined_here) + << VD; return ExprError(); } // OpenMP [2.9.2, Restrictions, C/C++, p.3] @@ -487,11 +490,12 @@ ExprResult Sema::ActOnOpenMPIdExpression(Scope *CurScope, if (CanonicalVD->isStaticDataMember() && !CanonicalVD->getDeclContext()->Equals(getCurLexicalContext())) { Diag(Id.getLoc(), diag::err_omp_var_scope) - << getOpenMPDirectiveName(OMPD_threadprivate) << VD; - bool IsDecl = VD->isThisDeclarationADefinition(Context) == - VarDecl::DeclarationOnly; - Diag(VD->getLocation(), IsDecl ? diag::note_previous_decl : - diag::note_defined_here) << VD; + << getOpenMPDirectiveName(OMPD_threadprivate) << VD; + bool IsDecl = + VD->isThisDeclarationADefinition(Context) == VarDecl::DeclarationOnly; + Diag(VD->getLocation(), + IsDecl ? diag::note_previous_decl : diag::note_defined_here) + << VD; return ExprError(); } // OpenMP [2.9.2, Restrictions, C/C++, p.4] @@ -502,11 +506,12 @@ ExprResult Sema::ActOnOpenMPIdExpression(Scope *CurScope, (!getCurLexicalContext()->isFileContext() || !getCurLexicalContext()->Encloses(CanonicalVD->getDeclContext()))) { Diag(Id.getLoc(), diag::err_omp_var_scope) - << getOpenMPDirectiveName(OMPD_threadprivate) << VD; - bool IsDecl = VD->isThisDeclarationADefinition(Context) == - VarDecl::DeclarationOnly; - Diag(VD->getLocation(), IsDecl ? diag::note_previous_decl : - diag::note_defined_here) << VD; + << getOpenMPDirectiveName(OMPD_threadprivate) << VD; + bool IsDecl = + VD->isThisDeclarationADefinition(Context) == VarDecl::DeclarationOnly; + Diag(VD->getLocation(), + IsDecl ? diag::note_previous_decl : diag::note_defined_here) + << VD; return ExprError(); } // OpenMP [2.9.2, Restrictions, C/C++, p.6] @@ -515,11 +520,12 @@ ExprResult Sema::ActOnOpenMPIdExpression(Scope *CurScope, if (CanonicalVD->isStaticLocal() && CurScope && !isDeclInScope(ND, getCurLexicalContext(), CurScope)) { Diag(Id.getLoc(), diag::err_omp_var_scope) - << getOpenMPDirectiveName(OMPD_threadprivate) << VD; - bool IsDecl = VD->isThisDeclarationADefinition(Context) == - VarDecl::DeclarationOnly; - Diag(VD->getLocation(), IsDecl ? diag::note_previous_decl : - diag::note_defined_here) << VD; + << getOpenMPDirectiveName(OMPD_threadprivate) << VD; + bool IsDecl = + VD->isThisDeclarationADefinition(Context) == VarDecl::DeclarationOnly; + Diag(VD->getLocation(), + IsDecl ? diag::note_previous_decl : diag::note_defined_here) + << VD; return ExprError(); } @@ -528,7 +534,7 @@ ExprResult Sema::ActOnOpenMPIdExpression(Scope *CurScope, // of the variables in its list. if (VD->isUsed()) { Diag(Id.getLoc(), diag::err_omp_var_used) - << getOpenMPDirectiveName(OMPD_threadprivate) << VD; + << getOpenMPDirectiveName(OMPD_threadprivate) << VD; return ExprError(); } @@ -537,9 +543,9 @@ ExprResult Sema::ActOnOpenMPIdExpression(Scope *CurScope, return DE; } -Sema::DeclGroupPtrTy Sema::ActOnOpenMPThreadprivateDirective( - SourceLocation Loc, - ArrayRef VarList) { +Sema::DeclGroupPtrTy +Sema::ActOnOpenMPThreadprivateDirective(SourceLocation Loc, + ArrayRef VarList) { if (OMPThreadPrivateDecl *D = CheckOMPThreadPrivateDecl(Loc, VarList)) { CurContext->addDecl(D); return DeclGroupPtrTy::make(DeclGroupRef(D)); @@ -547,14 +553,11 @@ Sema::DeclGroupPtrTy Sema::ActOnOpenMPThreadprivateDirective( return DeclGroupPtrTy(); } -OMPThreadPrivateDecl *Sema::CheckOMPThreadPrivateDecl( - SourceLocation Loc, - ArrayRef VarList) { +OMPThreadPrivateDecl * +Sema::CheckOMPThreadPrivateDecl(SourceLocation Loc, ArrayRef VarList) { SmallVector Vars; - for (ArrayRef::iterator I = VarList.begin(), - E = VarList.end(); - I != E; ++I) { - DeclRefExpr *DE = cast(*I); + for (auto &RefExpr : VarList) { + DeclRefExpr *DE = cast(RefExpr); VarDecl *VD = cast(DE->getDecl()); SourceLocation ILoc = DE->getExprLoc(); @@ -569,26 +572,27 @@ OMPThreadPrivateDecl *Sema::CheckOMPThreadPrivateDecl( // A threadprivate variable must not have a reference type. if (VD->getType()->isReferenceType()) { Diag(ILoc, diag::err_omp_ref_type_arg) - << getOpenMPDirectiveName(OMPD_threadprivate) - << VD->getType(); - bool IsDecl = VD->isThisDeclarationADefinition(Context) == - VarDecl::DeclarationOnly; - Diag(VD->getLocation(), IsDecl ? diag::note_previous_decl : - diag::note_defined_here) << VD; + << getOpenMPDirectiveName(OMPD_threadprivate) << VD->getType(); + bool IsDecl = + VD->isThisDeclarationADefinition(Context) == VarDecl::DeclarationOnly; + Diag(VD->getLocation(), + IsDecl ? diag::note_previous_decl : diag::note_defined_here) + << VD; continue; } // Check if this is a TLS variable. if (VD->getTLSKind()) { Diag(ILoc, diag::err_omp_var_thread_local) << VD; - bool IsDecl = VD->isThisDeclarationADefinition(Context) == - VarDecl::DeclarationOnly; - Diag(VD->getLocation(), IsDecl ? diag::note_previous_decl : - diag::note_defined_here) << VD; + bool IsDecl = + VD->isThisDeclarationADefinition(Context) == VarDecl::DeclarationOnly; + Diag(VD->getLocation(), + IsDecl ? diag::note_previous_decl : diag::note_defined_here) + << VD; continue; } - Vars.push_back(*I); + Vars.push_back(RefExpr); DSAStack->addDSA(VD, DE, OMPC_threadprivate); } OMPThreadPrivateDecl *D = nullptr; @@ -607,11 +611,13 @@ class DSAAttrChecker : public StmtVisitor { bool ErrorFound; CapturedStmt *CS; llvm::SmallVector ImplicitFirstprivate; + public: void VisitDeclRefExpr(DeclRefExpr *E) { - if(VarDecl *VD = dyn_cast(E->getDecl())) { + if (VarDecl *VD = dyn_cast(E->getDecl())) { // Skip internally declared variables. - if (VD->isLocalVarDecl() && !CS->capturesVariable(VD)) return; + if (VD->isLocalVarDecl() && !CS->capturesVariable(VD)) + return; SourceLocation ELoc = E->getExprLoc(); @@ -647,29 +653,27 @@ public: } } void VisitOMPExecutableDirective(OMPExecutableDirective *S) { - for (ArrayRef::iterator I = S->clauses().begin(), - E = S->clauses().end(); - I != E; ++I) - if (OMPClause *C = *I) + for (auto C : S->clauses()) + if (C) for (StmtRange R = C->children(); R; ++R) if (Stmt *Child = *R) Visit(Child); } void VisitStmt(Stmt *S) { - for (Stmt::child_iterator I = S->child_begin(), E = S->child_end(); - I != E; ++I) + for (Stmt::child_iterator I = S->child_begin(), E = S->child_end(); I != E; + ++I) if (Stmt *Child = *I) if (!isa(Child)) Visit(Child); - } + } bool isErrorFound() { return ErrorFound; } ArrayRef getImplicitFirstprivate() { return ImplicitFirstprivate; } DSAAttrChecker(DSAStackTy *S, Sema &Actions, CapturedStmt *CS) - : Stack(S), Actions(Actions), ErrorFound(false), CS(CS) { } + : Stack(S), Actions(Actions), ErrorFound(false), CS(CS) {} }; -} +} // namespace void Sema::ActOnOpenMPRegionStart(OpenMPDirectiveKind DKind, SourceLocation Loc, Scope *CurScope) { @@ -720,25 +724,24 @@ StmtResult Sema::ActOnOpenMPExecutableDirective(OpenMPDirectiveKind Kind, bool ErrorFound = false; if (!DSAChecker.getImplicitFirstprivate().empty()) { - if (OMPClause *Implicit = - ActOnOpenMPFirstprivateClause(DSAChecker.getImplicitFirstprivate(), - SourceLocation(), SourceLocation(), - SourceLocation())) { + if (OMPClause *Implicit = ActOnOpenMPFirstprivateClause( + DSAChecker.getImplicitFirstprivate(), SourceLocation(), + SourceLocation(), SourceLocation())) { ClausesWithImplicit.push_back(Implicit); ErrorFound = cast(Implicit)->varlist_size() != - DSAChecker.getImplicitFirstprivate().size(); + DSAChecker.getImplicitFirstprivate().size(); } else ErrorFound = true; } switch (Kind) { case OMPD_parallel: - Res = ActOnOpenMPParallelDirective(ClausesWithImplicit, AStmt, - StartLoc, EndLoc); + Res = ActOnOpenMPParallelDirective(ClausesWithImplicit, AStmt, StartLoc, + EndLoc); break; case OMPD_simd: - Res = ActOnOpenMPSimdDirective(ClausesWithImplicit, AStmt, - StartLoc, EndLoc); + Res = + ActOnOpenMPSimdDirective(ClausesWithImplicit, AStmt, StartLoc, EndLoc); break; case OMPD_threadprivate: case OMPD_task: @@ -747,7 +750,8 @@ StmtResult Sema::ActOnOpenMPExecutableDirective(OpenMPDirectiveKind Kind, llvm_unreachable("Unknown OpenMP directive"); } - if (ErrorFound) return StmtError(); + if (ErrorFound) + return StmtError(); return Res; } @@ -766,13 +770,12 @@ StmtResult Sema::ActOnOpenMPParallelDirective(ArrayRef Clauses, getCurFunction()->setHasBranchProtectedScope(); - return Owned(OMPParallelDirective::Create(Context, StartLoc, EndLoc, - Clauses, AStmt)); + return Owned( + OMPParallelDirective::Create(Context, StartLoc, EndLoc, Clauses, AStmt)); } StmtResult Sema::ActOnOpenMPSimdDirective(ArrayRef Clauses, - Stmt *AStmt, - SourceLocation StartLoc, + Stmt *AStmt, SourceLocation StartLoc, SourceLocation EndLoc) { Stmt *CStmt = AStmt; while (CapturedStmt *CS = dyn_cast_or_null(CStmt)) @@ -782,19 +785,18 @@ StmtResult Sema::ActOnOpenMPSimdDirective(ArrayRef Clauses, ForStmt *For = dyn_cast(CStmt); if (!For) { Diag(CStmt->getLocStart(), diag::err_omp_not_for) - << getOpenMPDirectiveName(OMPD_simd); + << getOpenMPDirectiveName(OMPD_simd); return StmtError(); } // FIXME: Checking loop canonical form, collapsing etc. getCurFunction()->setHasBranchProtectedScope(); - return Owned(OMPSimdDirective::Create(Context, StartLoc, EndLoc, - Clauses, AStmt)); + return Owned( + OMPSimdDirective::Create(Context, StartLoc, EndLoc, Clauses, AStmt)); } -OMPClause *Sema::ActOnOpenMPSingleExprClause(OpenMPClauseKind Kind, - Expr *Expr, +OMPClause *Sema::ActOnOpenMPSingleExprClause(OpenMPClauseKind Kind, Expr *Expr, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) { @@ -826,8 +828,7 @@ OMPClause *Sema::ActOnOpenMPSingleExprClause(OpenMPClauseKind Kind, return Res; } -OMPClause *Sema::ActOnOpenMPIfClause(Expr *Condition, - SourceLocation StartLoc, +OMPClause *Sema::ActOnOpenMPIfClause(Expr *Condition, SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) { Expr *ValExpr = Condition; @@ -835,8 +836,7 @@ OMPClause *Sema::ActOnOpenMPIfClause(Expr *Condition, !Condition->isInstantiationDependent() && !Condition->containsUnexpandedParameterPack()) { ExprResult Val = ActOnBooleanCondition(DSAStack->getCurScope(), - Condition->getExprLoc(), - Condition); + Condition->getExprLoc(), Condition); if (Val.isInvalid()) return nullptr; @@ -854,36 +854,36 @@ ExprResult Sema::PerformImplicitIntegerConversion(SourceLocation Loc, class IntConvertDiagnoser : public ICEConvertDiagnoser { public: IntConvertDiagnoser() - : ICEConvertDiagnoser(/*AllowScopedEnumerations*/false, - false, true) {} + : ICEConvertDiagnoser(/*AllowScopedEnumerations*/ false, false, true) {} SemaDiagnosticBuilder diagnoseNotInt(Sema &S, SourceLocation Loc, QualType T) override { return S.Diag(Loc, diag::err_omp_not_integral) << T; } - SemaDiagnosticBuilder diagnoseIncomplete( - Sema &S, SourceLocation Loc, QualType T) override { + SemaDiagnosticBuilder diagnoseIncomplete(Sema &S, SourceLocation Loc, + QualType T) override { return S.Diag(Loc, diag::err_omp_incomplete_type) << T; } - SemaDiagnosticBuilder diagnoseExplicitConv( - Sema &S, SourceLocation Loc, QualType T, QualType ConvTy) override { + SemaDiagnosticBuilder diagnoseExplicitConv(Sema &S, SourceLocation Loc, + QualType T, + QualType ConvTy) override { return S.Diag(Loc, diag::err_omp_explicit_conversion) << T << ConvTy; } - SemaDiagnosticBuilder noteExplicitConv( - Sema &S, CXXConversionDecl *Conv, QualType ConvTy) override { + SemaDiagnosticBuilder noteExplicitConv(Sema &S, CXXConversionDecl *Conv, + QualType ConvTy) override { return S.Diag(Conv->getLocation(), diag::note_omp_conversion_here) - << ConvTy->isEnumeralType() << ConvTy; + << ConvTy->isEnumeralType() << ConvTy; } - SemaDiagnosticBuilder diagnoseAmbiguous( - Sema &S, SourceLocation Loc, QualType T) override { + SemaDiagnosticBuilder diagnoseAmbiguous(Sema &S, SourceLocation Loc, + QualType T) override { return S.Diag(Loc, diag::err_omp_ambiguous_conversion) << T; } - SemaDiagnosticBuilder noteAmbiguous( - Sema &S, CXXConversionDecl *Conv, QualType ConvTy) override { + SemaDiagnosticBuilder noteAmbiguous(Sema &S, CXXConversionDecl *Conv, + QualType ConvTy) override { return S.Diag(Conv->getLocation(), diag::note_omp_conversion_here) - << ConvTy->isEnumeralType() << ConvTy; + << ConvTy->isEnumeralType() << ConvTy; } - SemaDiagnosticBuilder diagnoseConversion( - Sema &, SourceLocation, QualType, QualType) override { + SemaDiagnosticBuilder diagnoseConversion(Sema &, SourceLocation, QualType, + QualType) override { llvm_unreachable("conversion functions are permitted"); } } ConvertDiagnoser; @@ -909,16 +909,16 @@ OMPClause *Sema::ActOnOpenMPNumThreadsClause(Expr *NumThreads, // OpenMP [2.5, Restrictions] // The num_threads expression must evaluate to a positive integer value. llvm::APSInt Result; - if (ValExpr->isIntegerConstantExpr(Result, Context) && - Result.isSigned() && !Result.isStrictlyPositive()) { + if (ValExpr->isIntegerConstantExpr(Result, Context) && Result.isSigned() && + !Result.isStrictlyPositive()) { Diag(NumThreadsLoc, diag::err_omp_negative_expression_in_clause) << "num_threads" << NumThreads->getSourceRange(); return nullptr; } } - return new (Context) OMPNumThreadsClause(ValExpr, StartLoc, LParenLoc, - EndLoc); + return new (Context) + OMPNumThreadsClause(ValExpr, StartLoc, LParenLoc, EndLoc); } ExprResult Sema::VerifyPositiveIntegerConstantInClause(Expr *E, @@ -967,23 +967,20 @@ OMPClause *Sema::ActOnOpenMPCollapseClause(Expr *Num, SourceLocation StartLoc, OMPCollapseClause(NumForLoops.take(), StartLoc, LParenLoc, EndLoc); } -OMPClause *Sema::ActOnOpenMPSimpleClause(OpenMPClauseKind Kind, - unsigned Argument, - SourceLocation ArgumentLoc, - SourceLocation StartLoc, - SourceLocation LParenLoc, - SourceLocation EndLoc) { +OMPClause *Sema::ActOnOpenMPSimpleClause( + OpenMPClauseKind Kind, unsigned Argument, SourceLocation ArgumentLoc, + SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc) { OMPClause *Res = nullptr; switch (Kind) { case OMPC_default: Res = - ActOnOpenMPDefaultClause(static_cast(Argument), - ArgumentLoc, StartLoc, LParenLoc, EndLoc); + ActOnOpenMPDefaultClause(static_cast(Argument), + ArgumentLoc, StartLoc, LParenLoc, EndLoc); break; case OMPC_proc_bind: - Res = - ActOnOpenMPProcBindClause(static_cast(Argument), - ArgumentLoc, StartLoc, LParenLoc, EndLoc); + Res = ActOnOpenMPProcBindClause( + static_cast(Argument), ArgumentLoc, StartLoc, + LParenLoc, EndLoc); break; case OMPC_if: case OMPC_num_threads: @@ -1027,7 +1024,7 @@ OMPClause *Sema::ActOnOpenMPDefaultClause(OpenMPDefaultClauseKind Kind, } } Diag(KindKwLoc, diag::err_omp_unexpected_clause_value) - << Values << getOpenMPClauseName(OMPC_default); + << Values << getOpenMPClauseName(OMPC_default); return nullptr; } switch (Kind) { @@ -1041,8 +1038,8 @@ OMPClause *Sema::ActOnOpenMPDefaultClause(OpenMPDefaultClauseKind Kind, llvm_unreachable("Clause kind is not allowed."); break; } - return new (Context) OMPDefaultClause(Kind, KindKwLoc, StartLoc, LParenLoc, - EndLoc); + return new (Context) + OMPDefaultClause(Kind, KindKwLoc, StartLoc, LParenLoc, EndLoc); } OMPClause *Sema::ActOnOpenMPProcBindClause(OpenMPProcBindClauseKind Kind, @@ -1069,20 +1066,18 @@ OMPClause *Sema::ActOnOpenMPProcBindClause(OpenMPProcBindClauseKind Kind, } } Diag(KindKwLoc, diag::err_omp_unexpected_clause_value) - << Values << getOpenMPClauseName(OMPC_proc_bind); + << Values << getOpenMPClauseName(OMPC_proc_bind); return nullptr; } - return new (Context) OMPProcBindClause(Kind, KindKwLoc, StartLoc, LParenLoc, - EndLoc); + return new (Context) + OMPProcBindClause(Kind, KindKwLoc, StartLoc, LParenLoc, EndLoc); } -OMPClause *Sema::ActOnOpenMPVarListClause(OpenMPClauseKind Kind, - ArrayRef VarList, - Expr *TailExpr, - SourceLocation StartLoc, - SourceLocation LParenLoc, - SourceLocation ColonLoc, - SourceLocation EndLoc) { +OMPClause * +Sema::ActOnOpenMPVarListClause(OpenMPClauseKind Kind, ArrayRef VarList, + Expr *TailExpr, SourceLocation StartLoc, + SourceLocation LParenLoc, + SourceLocation ColonLoc, SourceLocation EndLoc) { OMPClause *Res = nullptr; switch (Kind) { case OMPC_private: @@ -1119,25 +1114,23 @@ OMPClause *Sema::ActOnOpenMPPrivateClause(ArrayRef VarList, SourceLocation LParenLoc, SourceLocation EndLoc) { SmallVector Vars; - for (ArrayRef::iterator I = VarList.begin(), E = VarList.end(); - I != E; ++I) { - assert(*I && "NULL expr in OpenMP private clause."); - if (isa(*I)) { + for (auto &RefExpr : VarList) { + assert(RefExpr && "NULL expr in OpenMP private clause."); + if (isa(RefExpr)) { // It will be analyzed later. - Vars.push_back(*I); + Vars.push_back(RefExpr); continue; } - SourceLocation ELoc = (*I)->getExprLoc(); + SourceLocation ELoc = RefExpr->getExprLoc(); // OpenMP [2.1, C/C++] // A list item is a variable name. // OpenMP [2.9.3.3, Restrictions, p.1] // A variable that is part of another variable (as an array or // structure element) cannot appear in a private clause. - DeclRefExpr *DE = dyn_cast_or_null(*I); + DeclRefExpr *DE = dyn_cast_or_null(RefExpr); if (!DE || !isa(DE->getDecl())) { - Diag(ELoc, diag::err_omp_expected_var_name) - << (*I)->getSourceRange(); + Diag(ELoc, diag::err_omp_expected_var_name) << RefExpr->getSourceRange(); continue; } Decl *D = DE->getDecl(); @@ -1159,11 +1152,12 @@ OMPClause *Sema::ActOnOpenMPPrivateClause(ArrayRef VarList, } if (Type->isReferenceType()) { Diag(ELoc, diag::err_omp_clause_ref_type_arg) - << getOpenMPClauseName(OMPC_private) << Type; - bool IsDecl = VD->isThisDeclarationADefinition(Context) == - VarDecl::DeclarationOnly; - Diag(VD->getLocation(), IsDecl ? diag::note_previous_decl : - diag::note_defined_here) << VD; + << getOpenMPClauseName(OMPC_private) << Type; + bool IsDecl = + VD->isThisDeclarationADefinition(Context) == VarDecl::DeclarationOnly; + Diag(VD->getLocation(), + IsDecl ? diag::note_previous_decl : diag::note_defined_here) + << VD; continue; } @@ -1172,8 +1166,8 @@ OMPClause *Sema::ActOnOpenMPPrivateClause(ArrayRef VarList, // clause requires an accesible, unambiguous default constructor for the // class type. while (Type.getNonReferenceType()->isArrayType()) { - Type = cast( - Type.getNonReferenceType().getTypePtr())->getElementType(); + Type = cast(Type.getNonReferenceType().getTypePtr()) + ->getElementType(); } CXXRecordDecl *RD = getLangOpts().CPlusPlus ? Type.getNonReferenceType()->getAsCXXRecordDecl() @@ -1181,18 +1175,18 @@ OMPClause *Sema::ActOnOpenMPPrivateClause(ArrayRef VarList, if (RD) { CXXConstructorDecl *CD = LookupDefaultConstructor(RD); PartialDiagnostic PD = - PartialDiagnostic(PartialDiagnostic::NullDiagnostic()); - if (!CD || - CheckConstructorAccess(ELoc, CD, - InitializedEntity::InitializeTemporary(Type), - CD->getAccess(), PD) == AR_inaccessible || + PartialDiagnostic(PartialDiagnostic::NullDiagnostic()); + if (!CD || CheckConstructorAccess( + ELoc, CD, InitializedEntity::InitializeTemporary(Type), + CD->getAccess(), PD) == AR_inaccessible || CD->isDeleted()) { Diag(ELoc, diag::err_omp_required_method) - << getOpenMPClauseName(OMPC_private) << 0; + << getOpenMPClauseName(OMPC_private) << 0; bool IsDecl = VD->isThisDeclarationADefinition(Context) == VarDecl::DeclarationOnly; - Diag(VD->getLocation(), IsDecl ? diag::note_previous_decl : - diag::note_defined_here) << VD; + Diag(VD->getLocation(), + IsDecl ? diag::note_previous_decl : diag::note_defined_here) + << VD; Diag(RD->getLocation(), diag::note_previous_decl) << RD; continue; } @@ -1204,11 +1198,12 @@ OMPClause *Sema::ActOnOpenMPPrivateClause(ArrayRef VarList, if (CheckDestructorAccess(ELoc, DD, PD) == AR_inaccessible || DD->isDeleted()) { Diag(ELoc, diag::err_omp_required_method) - << getOpenMPClauseName(OMPC_private) << 4; + << getOpenMPClauseName(OMPC_private) << 4; bool IsDecl = VD->isThisDeclarationADefinition(Context) == VarDecl::DeclarationOnly; - Diag(VD->getLocation(), IsDecl ? diag::note_previous_decl : - diag::note_defined_here) << VD; + Diag(VD->getLocation(), + IsDecl ? diag::note_previous_decl : diag::note_defined_here) + << VD; Diag(RD->getLocation(), diag::note_previous_decl) << RD; continue; } @@ -1226,15 +1221,14 @@ OMPClause *Sema::ActOnOpenMPPrivateClause(ArrayRef VarList, // the variable's predetermined data-sharing attributes. DSAStackTy::DSAVarData DVar = DSAStack->getTopDSA(VD); 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) << getOpenMPClauseName(DVar.CKind) + << getOpenMPClauseName(OMPC_private); if (DVar.RefExpr) { Diag(DVar.RefExpr->getExprLoc(), diag::note_omp_explicit_dsa) - << getOpenMPClauseName(DVar.CKind); + << getOpenMPClauseName(DVar.CKind); } else { Diag(VD->getLocation(), diag::note_omp_predetermined_dsa) - << getOpenMPClauseName(DVar.CKind); + << getOpenMPClauseName(DVar.CKind); } continue; } @@ -1243,7 +1237,8 @@ OMPClause *Sema::ActOnOpenMPPrivateClause(ArrayRef VarList, Vars.push_back(DE); } - if (Vars.empty()) return nullptr; + if (Vars.empty()) + return nullptr; return OMPPrivateClause::Create(Context, StartLoc, LParenLoc, EndLoc, Vars); } @@ -1253,25 +1248,23 @@ OMPClause *Sema::ActOnOpenMPFirstprivateClause(ArrayRef VarList, SourceLocation LParenLoc, SourceLocation EndLoc) { SmallVector Vars; - for (ArrayRef::iterator I = VarList.begin(), E = VarList.end(); - I != E; ++I) { - assert(*I && "NULL expr in OpenMP firstprivate clause."); - if (isa(*I)) { + for (auto &RefExpr : VarList) { + assert(RefExpr && "NULL expr in OpenMP firstprivate clause."); + if (isa(RefExpr)) { // It will be analyzed later. - Vars.push_back(*I); + Vars.push_back(RefExpr); continue; } - SourceLocation ELoc = (*I)->getExprLoc(); + SourceLocation ELoc = RefExpr->getExprLoc(); // OpenMP [2.1, C/C++] // A list item is a variable name. // OpenMP [2.9.3.3, Restrictions, p.1] // A variable that is part of another variable (as an array or // structure element) cannot appear in a private clause. - DeclRefExpr *DE = dyn_cast_or_null(*I); + DeclRefExpr *DE = dyn_cast_or_null(RefExpr); if (!DE || !isa(DE->getDecl())) { - Diag(ELoc, diag::err_omp_expected_var_name) - << (*I)->getSourceRange(); + Diag(ELoc, diag::err_omp_expected_var_name) << RefExpr->getSourceRange(); continue; } Decl *D = DE->getDecl(); @@ -1293,11 +1286,12 @@ OMPClause *Sema::ActOnOpenMPFirstprivateClause(ArrayRef VarList, } if (Type->isReferenceType()) { Diag(ELoc, diag::err_omp_clause_ref_type_arg) - << getOpenMPClauseName(OMPC_firstprivate) << Type; - bool IsDecl = VD->isThisDeclarationADefinition(Context) == - VarDecl::DeclarationOnly; - Diag(VD->getLocation(), IsDecl ? diag::note_previous_decl : - diag::note_defined_here) << VD; + << getOpenMPClauseName(OMPC_firstprivate) << Type; + bool IsDecl = + VD->isThisDeclarationADefinition(Context) == VarDecl::DeclarationOnly; + Diag(VD->getLocation(), + IsDecl ? diag::note_previous_decl : diag::note_defined_here) + << VD; continue; } @@ -1312,18 +1306,18 @@ OMPClause *Sema::ActOnOpenMPFirstprivateClause(ArrayRef VarList, if (RD) { CXXConstructorDecl *CD = LookupCopyingConstructor(RD, 0); PartialDiagnostic PD = - PartialDiagnostic(PartialDiagnostic::NullDiagnostic()); - if (!CD || - CheckConstructorAccess(ELoc, CD, - InitializedEntity::InitializeTemporary(Type), - CD->getAccess(), PD) == AR_inaccessible || + PartialDiagnostic(PartialDiagnostic::NullDiagnostic()); + if (!CD || CheckConstructorAccess( + ELoc, CD, InitializedEntity::InitializeTemporary(Type), + CD->getAccess(), PD) == AR_inaccessible || CD->isDeleted()) { Diag(ELoc, diag::err_omp_required_method) - << getOpenMPClauseName(OMPC_firstprivate) << 1; + << getOpenMPClauseName(OMPC_firstprivate) << 1; bool IsDecl = VD->isThisDeclarationADefinition(Context) == VarDecl::DeclarationOnly; - Diag(VD->getLocation(), IsDecl ? diag::note_previous_decl : - diag::note_defined_here) << VD; + Diag(VD->getLocation(), + IsDecl ? diag::note_previous_decl : diag::note_defined_here) + << VD; Diag(RD->getLocation(), diag::note_previous_decl) << RD; continue; } @@ -1335,11 +1329,12 @@ OMPClause *Sema::ActOnOpenMPFirstprivateClause(ArrayRef VarList, if (CheckDestructorAccess(ELoc, DD, PD) == AR_inaccessible || DD->isDeleted()) { Diag(ELoc, diag::err_omp_required_method) - << getOpenMPClauseName(OMPC_firstprivate) << 4; + << getOpenMPClauseName(OMPC_firstprivate) << 4; bool IsDecl = VD->isThisDeclarationADefinition(Context) == VarDecl::DeclarationOnly; - Diag(VD->getLocation(), IsDecl ? diag::note_previous_decl : - diag::note_defined_here) << VD; + Diag(VD->getLocation(), + IsDecl ? diag::note_previous_decl : diag::note_defined_here) + << VD; Diag(RD->getLocation(), diag::note_previous_decl) << RD; continue; } @@ -1363,10 +1358,10 @@ OMPClause *Sema::ActOnOpenMPFirstprivateClause(ArrayRef VarList, if (DVar.CKind != OMPC_unknown && DVar.CKind != OMPC_firstprivate && DVar.RefExpr) { Diag(ELoc, diag::err_omp_wrong_dsa) - << getOpenMPClauseName(DVar.CKind) - << getOpenMPClauseName(OMPC_firstprivate); + << getOpenMPClauseName(DVar.CKind) + << getOpenMPClauseName(OMPC_firstprivate); Diag(DVar.RefExpr->getExprLoc(), diag::note_omp_explicit_dsa) - << getOpenMPClauseName(DVar.CKind); + << getOpenMPClauseName(DVar.CKind); continue; } @@ -1384,10 +1379,10 @@ OMPClause *Sema::ActOnOpenMPFirstprivateClause(ArrayRef VarList, if (!(IsConstant || 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); + << getOpenMPClauseName(DVar.CKind) + << getOpenMPClauseName(OMPC_firstprivate); Diag(VD->getLocation(), diag::note_omp_predetermined_dsa) - << getOpenMPClauseName(DVar.CKind); + << getOpenMPClauseName(DVar.CKind); continue; } @@ -1414,7 +1409,8 @@ OMPClause *Sema::ActOnOpenMPFirstprivateClause(ArrayRef VarList, Vars.push_back(DE); } - if (Vars.empty()) return nullptr; + if (Vars.empty()) + return nullptr; return OMPFirstprivateClause::Create(Context, StartLoc, LParenLoc, EndLoc, Vars); @@ -1425,26 +1421,24 @@ OMPClause *Sema::ActOnOpenMPSharedClause(ArrayRef VarList, SourceLocation LParenLoc, SourceLocation EndLoc) { SmallVector Vars; - for (ArrayRef::iterator I = VarList.begin(), E = VarList.end(); - I != E; ++I) { - assert(*I && "NULL expr in OpenMP shared clause."); - if (isa(*I)) { + for (auto &RefExpr : VarList) { + assert(RefExpr && "NULL expr in OpenMP shared clause."); + if (isa(RefExpr)) { // It will be analyzed later. - Vars.push_back(*I); + Vars.push_back(RefExpr); continue; } - SourceLocation ELoc = (*I)->getExprLoc(); + SourceLocation ELoc = RefExpr->getExprLoc(); // OpenMP [2.1, C/C++] // A list item is a variable name. // OpenMP [2.14.3.2, Restrictions, p.1] // A variable that is part of another variable (as an array or structure // element) cannot appear in a shared unless it is a static data member // of a C++ class. - DeclRefExpr *DE = dyn_cast(*I); + DeclRefExpr *DE = dyn_cast(RefExpr); if (!DE || !isa(DE->getDecl())) { - Diag(ELoc, diag::err_omp_expected_var_name) - << (*I)->getSourceRange(); + Diag(ELoc, diag::err_omp_expected_var_name) << RefExpr->getSourceRange(); continue; } Decl *D = DE->getDecl(); @@ -1465,12 +1459,12 @@ OMPClause *Sema::ActOnOpenMPSharedClause(ArrayRef VarList, // variable in a data-sharing attribute clause is allowed and overrides // the variable's predetermined data-sharing attributes. DSAStackTy::DSAVarData DVar = DSAStack->getTopDSA(VD); - if (DVar.CKind != OMPC_unknown && DVar.CKind != OMPC_shared && DVar.RefExpr) { - Diag(ELoc, diag::err_omp_wrong_dsa) - << getOpenMPClauseName(DVar.CKind) - << getOpenMPClauseName(OMPC_shared); + 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(DVar.RefExpr->getExprLoc(), diag::note_omp_explicit_dsa) - << getOpenMPClauseName(DVar.CKind); + << getOpenMPClauseName(DVar.CKind); continue; } @@ -1478,7 +1472,8 @@ OMPClause *Sema::ActOnOpenMPSharedClause(ArrayRef VarList, Vars.push_back(DE); } - if (Vars.empty()) return nullptr; + if (Vars.empty()) + return nullptr; return OMPSharedClause::Create(Context, StartLoc, LParenLoc, EndLoc, Vars); } @@ -1489,12 +1484,11 @@ OMPClause *Sema::ActOnOpenMPLinearClause(ArrayRef VarList, Expr *Step, SourceLocation ColonLoc, SourceLocation EndLoc) { SmallVector Vars; - for (ArrayRef::iterator I = VarList.begin(), E = VarList.end(); - I != E; ++I) { - assert(*I && "NULL expr in OpenMP linear clause."); - if (isa(*I)) { + for (auto &RefExpr : VarList) { + assert(RefExpr && "NULL expr in OpenMP linear clause."); + if (isa(RefExpr)) { // It will be analyzed later. - Vars.push_back(*I); + Vars.push_back(RefExpr); continue; } @@ -1506,15 +1500,15 @@ OMPClause *Sema::ActOnOpenMPLinearClause(ArrayRef VarList, Expr *Step, // list item before entering the construct plus the logical number of // the iteration times linear-step. - SourceLocation ELoc = (*I)->getExprLoc(); + SourceLocation ELoc = RefExpr->getExprLoc(); // OpenMP [2.1, C/C++] // A list item is a variable name. // OpenMP [2.14.3.3, Restrictions, p.1] // A variable that is part of another variable (as an array or // structure element) cannot appear in a private clause. - DeclRefExpr *DE = dyn_cast(*I); + DeclRefExpr *DE = dyn_cast(RefExpr); if (!DE || !isa(DE->getDecl())) { - Diag(ELoc, diag::err_omp_expected_var_name) << (*I)->getSourceRange(); + Diag(ELoc, diag::err_omp_expected_var_name) << RefExpr->getSourceRange(); continue; } @@ -1617,24 +1611,22 @@ OMPClause *Sema::ActOnOpenMPCopyinClause(ArrayRef VarList, SourceLocation LParenLoc, SourceLocation EndLoc) { SmallVector Vars; - for (ArrayRef::iterator I = VarList.begin(), E = VarList.end(); - I != E; ++I) { - assert(*I && "NULL expr in OpenMP copyin clause."); - if (isa(*I)) { + for (auto &RefExpr : VarList) { + assert(RefExpr && "NULL expr in OpenMP copyin clause."); + if (isa(RefExpr)) { // It will be analyzed later. - Vars.push_back(*I); + Vars.push_back(RefExpr); continue; } - SourceLocation ELoc = (*I)->getExprLoc(); + SourceLocation ELoc = RefExpr->getExprLoc(); // OpenMP [2.1, C/C++] // A list item is a variable name. // OpenMP [2.14.4.1, Restrictions, p.1] // A list item that appears in a copyin clause must be threadprivate. - DeclRefExpr *DE = dyn_cast(*I); + DeclRefExpr *DE = dyn_cast(RefExpr); if (!DE || !isa(DE->getDecl())) { - Diag(ELoc, diag::err_omp_expected_var_name) - << (*I)->getSourceRange(); + Diag(ELoc, diag::err_omp_expected_var_name) << RefExpr->getSourceRange(); continue; } @@ -1652,8 +1644,8 @@ OMPClause *Sema::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) - << getOpenMPDirectiveName(OMPD_threadprivate); + << getOpenMPClauseName(OMPC_copyin) + << getOpenMPDirectiveName(OMPD_threadprivate); continue; } @@ -1667,15 +1659,15 @@ OMPClause *Sema::ActOnOpenMPCopyinClause(ArrayRef VarList, if (RD) { CXXMethodDecl *MD = LookupCopyingAssignment(RD, 0, false, 0); DeclAccessPair FoundDecl = DeclAccessPair::make(MD, MD->getAccess()); - if (!MD || - CheckMemberAccess(ELoc, RD, FoundDecl) == AR_inaccessible || + if (!MD || CheckMemberAccess(ELoc, RD, FoundDecl) == AR_inaccessible || MD->isDeleted()) { Diag(ELoc, diag::err_omp_required_method) - << getOpenMPClauseName(OMPC_copyin) << 2; + << getOpenMPClauseName(OMPC_copyin) << 2; bool IsDecl = VD->isThisDeclarationADefinition(Context) == VarDecl::DeclarationOnly; - Diag(VD->getLocation(), IsDecl ? diag::note_previous_decl : - diag::note_defined_here) << VD; + Diag(VD->getLocation(), + IsDecl ? diag::note_previous_decl : diag::note_defined_here) + << VD; Diag(RD->getLocation(), diag::note_previous_decl) << RD; continue; } @@ -1687,7 +1679,8 @@ OMPClause *Sema::ActOnOpenMPCopyinClause(ArrayRef VarList, Vars.push_back(DE); } - if (Vars.empty()) return nullptr; + if (Vars.empty()) + return nullptr; return OMPCopyinClause::Create(Context, StartLoc, LParenLoc, EndLoc, Vars); }