From 61908f651ed21237599af6ccfb555da3bcff6dd1 Mon Sep 17 00:00:00 2001 From: Alexey Bataev Date: Mon, 23 Apr 2018 19:53:05 +0000 Subject: [PATCH] [OPENMP] Formatting and code improvement, NFC. llvm-svn: 330634 --- clang/lib/Parse/ParseOpenMP.cpp | 181 +++++++++++++++++++++------------------- 1 file changed, 93 insertions(+), 88 deletions(-) diff --git a/clang/lib/Parse/ParseOpenMP.cpp b/clang/lib/Parse/ParseOpenMP.cpp index 7528e43..e00bfb8 100644 --- a/clang/lib/Parse/ParseOpenMP.cpp +++ b/clang/lib/Parse/ParseOpenMP.cpp @@ -80,51 +80,56 @@ static unsigned getOpenMPDirectiveKindEx(StringRef S) { .Default(OMPD_unknown); } -static OpenMPDirectiveKind ParseOpenMPDirectiveKind(Parser &P) { +static OpenMPDirectiveKind parseOpenMPDirectiveKind(Parser &P) { // Array of foldings: F[i][0] F[i][1] ===> F[i][2]. // E.g.: OMPD_for OMPD_simd ===> OMPD_for_simd // TODO: add other combined directives in topological order. static const unsigned F[][3] = { - { OMPD_cancellation, OMPD_point, OMPD_cancellation_point }, - { OMPD_declare, OMPD_reduction, OMPD_declare_reduction }, - { OMPD_declare, OMPD_simd, OMPD_declare_simd }, - { OMPD_declare, OMPD_target, OMPD_declare_target }, - { OMPD_distribute, OMPD_parallel, OMPD_distribute_parallel }, - { OMPD_distribute_parallel, OMPD_for, OMPD_distribute_parallel_for }, - { OMPD_distribute_parallel_for, OMPD_simd, - OMPD_distribute_parallel_for_simd }, - { OMPD_distribute, OMPD_simd, OMPD_distribute_simd }, - { OMPD_end, OMPD_declare, OMPD_end_declare }, - { OMPD_end_declare, OMPD_target, OMPD_end_declare_target }, - { OMPD_target, OMPD_data, OMPD_target_data }, - { OMPD_target, OMPD_enter, OMPD_target_enter }, - { OMPD_target, OMPD_exit, OMPD_target_exit }, - { OMPD_target, OMPD_update, OMPD_target_update }, - { OMPD_target_enter, OMPD_data, OMPD_target_enter_data }, - { OMPD_target_exit, OMPD_data, OMPD_target_exit_data }, - { OMPD_for, OMPD_simd, OMPD_for_simd }, - { OMPD_parallel, OMPD_for, OMPD_parallel_for }, - { OMPD_parallel_for, OMPD_simd, OMPD_parallel_for_simd }, - { OMPD_parallel, OMPD_sections, OMPD_parallel_sections }, - { OMPD_taskloop, OMPD_simd, OMPD_taskloop_simd }, - { OMPD_target, OMPD_parallel, OMPD_target_parallel }, - { OMPD_target, OMPD_simd, OMPD_target_simd }, - { OMPD_target_parallel, OMPD_for, OMPD_target_parallel_for }, - { OMPD_target_parallel_for, OMPD_simd, OMPD_target_parallel_for_simd }, - { OMPD_teams, OMPD_distribute, OMPD_teams_distribute }, - { OMPD_teams_distribute, OMPD_simd, OMPD_teams_distribute_simd }, - { OMPD_teams_distribute, OMPD_parallel, OMPD_teams_distribute_parallel }, - { OMPD_teams_distribute_parallel, OMPD_for, OMPD_teams_distribute_parallel_for }, - { OMPD_teams_distribute_parallel_for, OMPD_simd, OMPD_teams_distribute_parallel_for_simd }, - { OMPD_target, OMPD_teams, OMPD_target_teams }, - { OMPD_target_teams, OMPD_distribute, OMPD_target_teams_distribute }, - { OMPD_target_teams_distribute, OMPD_parallel, OMPD_target_teams_distribute_parallel }, - { OMPD_target_teams_distribute, OMPD_simd, OMPD_target_teams_distribute_simd }, - { OMPD_target_teams_distribute_parallel, OMPD_for, OMPD_target_teams_distribute_parallel_for }, - { OMPD_target_teams_distribute_parallel_for, OMPD_simd, OMPD_target_teams_distribute_parallel_for_simd } - }; + {OMPD_cancellation, OMPD_point, OMPD_cancellation_point}, + {OMPD_declare, OMPD_reduction, OMPD_declare_reduction}, + {OMPD_declare, OMPD_simd, OMPD_declare_simd}, + {OMPD_declare, OMPD_target, OMPD_declare_target}, + {OMPD_distribute, OMPD_parallel, OMPD_distribute_parallel}, + {OMPD_distribute_parallel, OMPD_for, OMPD_distribute_parallel_for}, + {OMPD_distribute_parallel_for, OMPD_simd, + OMPD_distribute_parallel_for_simd}, + {OMPD_distribute, OMPD_simd, OMPD_distribute_simd}, + {OMPD_end, OMPD_declare, OMPD_end_declare}, + {OMPD_end_declare, OMPD_target, OMPD_end_declare_target}, + {OMPD_target, OMPD_data, OMPD_target_data}, + {OMPD_target, OMPD_enter, OMPD_target_enter}, + {OMPD_target, OMPD_exit, OMPD_target_exit}, + {OMPD_target, OMPD_update, OMPD_target_update}, + {OMPD_target_enter, OMPD_data, OMPD_target_enter_data}, + {OMPD_target_exit, OMPD_data, OMPD_target_exit_data}, + {OMPD_for, OMPD_simd, OMPD_for_simd}, + {OMPD_parallel, OMPD_for, OMPD_parallel_for}, + {OMPD_parallel_for, OMPD_simd, OMPD_parallel_for_simd}, + {OMPD_parallel, OMPD_sections, OMPD_parallel_sections}, + {OMPD_taskloop, OMPD_simd, OMPD_taskloop_simd}, + {OMPD_target, OMPD_parallel, OMPD_target_parallel}, + {OMPD_target, OMPD_simd, OMPD_target_simd}, + {OMPD_target_parallel, OMPD_for, OMPD_target_parallel_for}, + {OMPD_target_parallel_for, OMPD_simd, OMPD_target_parallel_for_simd}, + {OMPD_teams, OMPD_distribute, OMPD_teams_distribute}, + {OMPD_teams_distribute, OMPD_simd, OMPD_teams_distribute_simd}, + {OMPD_teams_distribute, OMPD_parallel, OMPD_teams_distribute_parallel}, + {OMPD_teams_distribute_parallel, OMPD_for, + OMPD_teams_distribute_parallel_for}, + {OMPD_teams_distribute_parallel_for, OMPD_simd, + OMPD_teams_distribute_parallel_for_simd}, + {OMPD_target, OMPD_teams, OMPD_target_teams}, + {OMPD_target_teams, OMPD_distribute, OMPD_target_teams_distribute}, + {OMPD_target_teams_distribute, OMPD_parallel, + OMPD_target_teams_distribute_parallel}, + {OMPD_target_teams_distribute, OMPD_simd, + OMPD_target_teams_distribute_simd}, + {OMPD_target_teams_distribute_parallel, OMPD_for, + OMPD_target_teams_distribute_parallel_for}, + {OMPD_target_teams_distribute_parallel_for, OMPD_simd, + OMPD_target_teams_distribute_parallel_for_simd}}; enum { CancellationPoint = 0, DeclareReduction = 1, TargetData = 2 }; - auto Tok = P.getCurToken(); + Token Tok = P.getCurToken(); unsigned DKind = Tok.isAnnotation() ? static_cast(OMPD_unknown) @@ -132,8 +137,8 @@ static OpenMPDirectiveKind ParseOpenMPDirectiveKind(Parser &P) { if (DKind == OMPD_unknown) return OMPD_unknown; - for (unsigned i = 0; i < llvm::array_lengthof(F); ++i) { - if (DKind != F[i][0]) + for (unsigned I = 0; I < llvm::array_lengthof(F); ++I) { + if (DKind != F[I][0]) continue; Tok = P.getPreprocessor().LookAhead(0); @@ -144,9 +149,9 @@ static OpenMPDirectiveKind ParseOpenMPDirectiveKind(Parser &P) { if (SDKind == OMPD_unknown) continue; - if (SDKind == F[i][1]) { + if (SDKind == F[I][1]) { P.ConsumeToken(); - DKind = F[i][2]; + DKind = F[I][2]; } } return DKind < OMPD_unknown ? static_cast(DKind) @@ -253,7 +258,7 @@ Parser::ParseOpenMPDeclareReductionDirective(AccessSpecifier AS) { TypeResult TR = ParseTypeName(&Range, DeclaratorContext::PrototypeContext, AS); if (TR.isUsable()) { - auto ReductionType = + QualType ReductionType = Actions.ActOnOpenMPDeclareReductionType(Range.getBegin(), TR); if (!ReductionType.isNull()) { ReductionTypes.push_back( @@ -300,7 +305,7 @@ Parser::ParseOpenMPDeclareReductionDirective(AccessSpecifier AS) { // Parse expression and then parse initializer if any for each // correct type. unsigned I = 0, E = ReductionTypes.size(); - for (auto *D : DRD.get()) { + for (Decl *D : DRD.get()) { TentativeParsingAction TPA(*this); ParseScope OMPDRScope(this, Scope::FnScope | Scope::DeclScope | Scope::CompoundStmtScope | @@ -323,9 +328,9 @@ Parser::ParseOpenMPDeclareReductionDirective(AccessSpecifier AS) { if (Tok.isNot(tok::annot_pragma_openmp_end)) { // Parse expression. if (Tok.is(tok::identifier) && - Tok.getIdentifierInfo()->isStr("initializer")) + Tok.getIdentifierInfo()->isStr("initializer")) { ConsumeToken(); - else { + } else { Diag(Tok.getLocation(), diag::err_expected) << "'initializer'"; TPA.Commit(); IsCorrect = false; @@ -551,7 +556,7 @@ static bool parseDeclareSimdClauses( if (CKind == OMPC_uniform || CKind == OMPC_aligned || CKind == OMPC_linear) { Parser::OpenMPVarListDataTy Data; - auto *Vars = &Uniforms; + SmallVectorImpl *Vars = &Uniforms; if (CKind == OMPC_aligned) Vars = &Aligneds; else if (CKind == OMPC_linear) @@ -561,9 +566,9 @@ static bool parseDeclareSimdClauses( if (P.ParseOpenMPVarList(OMPD_declare_simd, getOpenMPClauseKind(ClauseName), *Vars, Data)) IsError = true; - if (CKind == OMPC_aligned) + if (CKind == OMPC_aligned) { Alignments.append(Aligneds.size() - Alignments.size(), Data.TailExpr); - else if (CKind == OMPC_linear) { + } else if (CKind == OMPC_linear) { if (P.getActions().CheckOpenMPLinearModifier(Data.LinKind, Data.DepLinMapLoc)) Data.LinKind = OMPC_LINEAR_val; @@ -613,12 +618,11 @@ Parser::ParseOMPDeclareSimdClauses(Parser::DeclGroupPtrTy Ptr, } // Skip the last annot_pragma_openmp_end. SourceLocation EndLoc = ConsumeAnnotationToken(); - if (!IsError) { - return Actions.ActOnOpenMPDeclareSimdDirective( - Ptr, BS, Simdlen.get(), Uniforms, Aligneds, Alignments, Linears, - LinModifiers, Steps, SourceRange(Loc, EndLoc)); - } - return Ptr; + if (IsError) + return Ptr; + return Actions.ActOnOpenMPDeclareSimdDirective( + Ptr, BS, Simdlen.get(), Uniforms, Aligneds, Alignments, Linears, + LinModifiers, Steps, SourceRange(Loc, EndLoc)); } /// \brief Parsing of declarative OpenMP directives. @@ -643,7 +647,7 @@ Parser::DeclGroupPtrTy Parser::ParseOpenMPDeclarativeDirectiveWithExtDecl( ParenBraceBracketBalancer BalancerRAIIObj(*this); SourceLocation Loc = ConsumeAnnotationToken(); - auto DKind = ParseOpenMPDirectiveKind(*this); + OpenMPDirectiveKind DKind = parseOpenMPDirectiveKind(*this); switch (DKind) { case OMPD_threadprivate: { @@ -666,7 +670,7 @@ Parser::DeclGroupPtrTy Parser::ParseOpenMPDeclarativeDirectiveWithExtDecl( } case OMPD_declare_reduction: ConsumeToken(); - if (auto Res = ParseOpenMPDeclareReductionDirective(AS)) { + if (DeclGroupPtrTy Res = ParseOpenMPDeclareReductionDirective(AS)) { // The last seen token is annot_pragma_openmp_end - need to check for // extra tokens. if (Tok.isNot(tok::annot_pragma_openmp_end)) { @@ -695,9 +699,9 @@ Parser::DeclGroupPtrTy Parser::ParseOpenMPDeclarativeDirectiveWithExtDecl( ConsumeAnyToken(); DeclGroupPtrTy Ptr; - if (Tok.is(tok::annot_pragma_openmp)) + if (Tok.is(tok::annot_pragma_openmp)) { Ptr = ParseOpenMPDeclarativeDirectiveWithExtDecl(AS, Attrs, TagType, Tag); - else if (Tok.isNot(tok::r_brace) && !isEofOrEom()) { + } else if (Tok.isNot(tok::r_brace) && !isEofOrEom()) { // Here we expect to see some function declaration. if (AS == AS_none) { assert(TagType == DeclSpec::TST_unspecified); @@ -735,8 +739,8 @@ Parser::DeclGroupPtrTy Parser::ParseOpenMPDeclarativeDirectiveWithExtDecl( } ConsumeToken(); } - auto Callback = [this, MT, &SameDirectiveDecls]( - CXXScopeSpec &SS, DeclarationNameInfo NameInfo) { + auto &&Callback = [this, MT, &SameDirectiveDecls]( + CXXScopeSpec &SS, DeclarationNameInfo NameInfo) { Actions.ActOnOpenMPDeclareTargetName(getCurScope(), SS, NameInfo, MT, SameDirectiveDecls); }; @@ -750,10 +754,8 @@ Parser::DeclGroupPtrTy Parser::ParseOpenMPDeclarativeDirectiveWithExtDecl( } SkipUntil(tok::annot_pragma_openmp_end, StopBeforeMatch); ConsumeAnyToken(); - SmallVector Decls; - Decls.reserve(SameDirectiveDecls.size()); - for (Decl *D : SameDirectiveDecls) - Decls.emplace_back(D); + SmallVector Decls(SameDirectiveDecls.begin(), + SameDirectiveDecls.end()); if (Decls.empty()) return DeclGroupPtrTy(); return Actions.BuildDeclaratorGroup(Decls); @@ -766,7 +768,7 @@ Parser::DeclGroupPtrTy Parser::ParseOpenMPDeclarativeDirectiveWithExtDecl( return DeclGroupPtrTy(); llvm::SmallVector Decls; - DKind = ParseOpenMPDirectiveKind(*this); + DKind = parseOpenMPDirectiveKind(*this); while (DKind != OMPD_end_declare_target && DKind != OMPD_declare_target && Tok.isNot(tok::eof) && Tok.isNot(tok::r_brace)) { DeclGroupPtrTy Ptr; @@ -787,7 +789,7 @@ Parser::DeclGroupPtrTy Parser::ParseOpenMPDeclarativeDirectiveWithExtDecl( if (Tok.isAnnotation() && Tok.is(tok::annot_pragma_openmp)) { TentativeParsingAction TPA(*this); ConsumeAnnotationToken(); - DKind = ParseOpenMPDirectiveKind(*this); + DKind = parseOpenMPDirectiveKind(*this); if (DKind != OMPD_end_declare_target) TPA.Revert(); else @@ -915,7 +917,7 @@ StmtResult Parser::ParseOpenMPDeclarativeOrExecutableDirective( unsigned ScopeFlags = Scope::FnScope | Scope::DeclScope | Scope::CompoundStmtScope | Scope::OpenMPDirectiveScope; SourceLocation Loc = ConsumeAnnotationToken(), EndLoc; - auto DKind = ParseOpenMPDirectiveKind(*this); + OpenMPDirectiveKind DKind = parseOpenMPDirectiveKind(*this); OpenMPDirectiveKind CancelRegion = OMPD_unknown; // Name of critical directive. DeclarationNameInfo DirName; @@ -948,7 +950,8 @@ StmtResult Parser::ParseOpenMPDeclarativeOrExecutableDirective( } case OMPD_declare_reduction: ConsumeToken(); - if (auto Res = ParseOpenMPDeclareReductionDirective(/*AS=*/AS_none)) { + if (DeclGroupPtrTy Res = + ParseOpenMPDeclareReductionDirective(/*AS=*/AS_none)) { // The last seen token is annot_pragma_openmp_end - need to check for // extra tokens. if (Tok.isNot(tok::annot_pragma_openmp_end)) { @@ -959,8 +962,9 @@ StmtResult Parser::ParseOpenMPDeclarativeOrExecutableDirective( } ConsumeAnyToken(); Directive = Actions.ActOnDeclStmt(Res, Loc, Tok.getLocation()); - } else + } else { SkipUntil(tok::annot_pragma_openmp_end); + } break; case OMPD_flush: if (PP.LookAhead(0).is(tok::l_paren)) { @@ -1039,7 +1043,7 @@ StmtResult Parser::ParseOpenMPDeclarativeOrExecutableDirective( T.consumeClose(); } } else if (DKind == OMPD_cancellation_point || DKind == OMPD_cancel) { - CancelRegion = ParseOpenMPDirectiveKind(*this); + CancelRegion = parseOpenMPDirectiveKind(*this); if (Tok.isNot(tok::annot_pragma_openmp_end)) ConsumeToken(); } @@ -1531,7 +1535,7 @@ OMPClause *Parser::ParseOpenMPSingleExprWithArgClause(OpenMPClauseKind Kind, Arg[Modifier1] = OMPC_SCHEDULE_MODIFIER_unknown; Arg[Modifier2] = OMPC_SCHEDULE_MODIFIER_unknown; Arg[ScheduleKind] = OMPC_SCHEDULE_unknown; - auto KindModifier = getOpenMPSimpleClauseType( + unsigned KindModifier = getOpenMPSimpleClauseType( Kind, Tok.isAnnotation() ? "" : PP.getSpelling(Tok)); if (KindModifier > OMPC_SCHEDULE_unknown) { // Parse 'modifier' @@ -1604,7 +1608,7 @@ OMPClause *Parser::ParseOpenMPSingleExprWithArgClause(OpenMPClauseKind Kind, assert(Kind == OMPC_if); KLoc.push_back(Tok.getLocation()); TentativeParsingAction TPA(*this); - Arg.push_back(ParseOpenMPDirectiveKind(*this)); + Arg.push_back(parseOpenMPDirectiveKind(*this)); if (Arg.back() != OMPD_unknown) { ConsumeToken(); if (Tok.is(tok::colon) && getLangOpts().OpenMP > 40) { @@ -1614,8 +1618,9 @@ OMPClause *Parser::ParseOpenMPSingleExprWithArgClause(OpenMPClauseKind Kind, TPA.Revert(); Arg.back() = OMPD_unknown; } - } else + } else { TPA.Revert(); + } } bool NeedAnExpression = (Kind == OMPC_schedule && DelimLoc.isValid()) || @@ -1747,9 +1752,9 @@ bool Parser::ParseOpenMPVarList(OpenMPDirectiveKind DKind, return false; } } - if (Tok.is(tok::colon)) + if (Tok.is(tok::colon)) { Data.ColonLoc = ConsumeToken(); - else { + } else { Diag(Tok, DKind == OMPD_ordered ? diag::warn_pragma_expected_colon_r_paren : diag::warn_pragma_expected_colon) << "dependency type"; @@ -1798,8 +1803,9 @@ bool Parser::ParseOpenMPVarList(OpenMPDirectiveKind DKind, if (Data.MapTypeModifier != OMPC_MAP_always) { Diag(Tok, diag::err_omp_unknown_map_type_modifier); Data.MapTypeModifier = OMPC_MAP_unknown; - } else + } else { MapTypeModifierSpecified = true; + } ConsumeToken(); ConsumeToken(); @@ -1823,8 +1829,9 @@ bool Parser::ParseOpenMPVarList(OpenMPDirectiveKind DKind, if (Data.MapTypeModifier != OMPC_MAP_always) { Diag(Tok, diag::err_omp_unknown_map_type_modifier); Data.MapTypeModifier = OMPC_MAP_unknown; - } else + } else { MapTypeModifierSpecified = true; + } ConsumeToken(); @@ -1871,9 +1878,9 @@ bool Parser::ParseOpenMPVarList(OpenMPDirectiveKind DKind, // Parse variable ExprResult VarExpr = Actions.CorrectDelayedTyposInExpr(ParseAssignmentExpression()); - if (VarExpr.isUsable()) + if (VarExpr.isUsable()) { Vars.push_back(VarExpr.get()); - else { + } else { SkipUntil(tok::comma, tok::r_paren, tok::annot_pragma_openmp_end, StopBeforeMatch); } @@ -1910,12 +1917,10 @@ bool Parser::ParseOpenMPVarList(OpenMPDirectiveKind DKind, // Parse ')'. T.consumeClose(); - if ((Kind == OMPC_depend && Data.DepKind != OMPC_DEPEND_unknown && - Vars.empty()) || - (Kind != OMPC_depend && Kind != OMPC_map && Vars.empty()) || - (MustHaveTail && !Data.TailExpr) || InvalidReductionId) - return true; - return false; + return (Kind == OMPC_depend && Data.DepKind != OMPC_DEPEND_unknown && + Vars.empty()) || + (Kind != OMPC_depend && Kind != OMPC_map && Vars.empty()) || + (MustHaveTail && !Data.TailExpr) || InvalidReductionId; } /// \brief Parsing of OpenMP clause 'private', 'firstprivate', 'lastprivate', -- 2.7.4