Author: abataev Date: Mon Sep 23 11:13:31 2019 New Revision: 372635 URL: http://llvm.org/viewvc/llvm-project?rev=372635&view=rev Log: [OPENMP]Use standard parsing for 'match' clause, NFC.
Reused standard clauses parsing scheme for parsing/matching 'match' clause in 'declare variant' directive. Modified: cfe/trunk/include/clang/AST/RecursiveASTVisitor.h cfe/trunk/include/clang/Basic/OpenMPKinds.def cfe/trunk/include/clang/Basic/OpenMPKinds.h cfe/trunk/lib/AST/ASTTypeTraits.cpp cfe/trunk/lib/AST/OpenMPClause.cpp cfe/trunk/lib/Basic/OpenMPKinds.cpp cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp cfe/trunk/lib/Parse/ParseOpenMP.cpp cfe/trunk/lib/Sema/SemaOpenMP.cpp Modified: cfe/trunk/include/clang/AST/RecursiveASTVisitor.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/RecursiveASTVisitor.h?rev=372635&r1=372634&r2=372635&view=diff ============================================================================== --- cfe/trunk/include/clang/AST/RecursiveASTVisitor.h (original) +++ cfe/trunk/include/clang/AST/RecursiveASTVisitor.h Mon Sep 23 11:13:31 2019 @@ -2844,6 +2844,7 @@ bool RecursiveASTVisitor<Derived>::Trave case OMPC_threadprivate: case OMPC_uniform: case OMPC_device_type: + case OMPC_match: case OMPC_unknown: break; } Modified: cfe/trunk/include/clang/Basic/OpenMPKinds.def URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/OpenMPKinds.def?rev=372635&r1=372634&r2=372635&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/OpenMPKinds.def (original) +++ cfe/trunk/include/clang/Basic/OpenMPKinds.def Mon Sep 23 11:13:31 2019 @@ -194,6 +194,9 @@ #ifndef OPENMP_DEVICE_TYPE_KIND #define OPENMP_DEVICE_TYPE_KIND(Name) #endif +#ifndef OPENMP_DECLARE_VARIANT_CLAUSE +#define OPENMP_DECLARE_VARIANT_CLAUSE(Name) +#endif // OpenMP directives. OPENMP_DIRECTIVE(threadprivate) @@ -959,6 +962,10 @@ OPENMP_DEVICE_TYPE_KIND(host) OPENMP_DEVICE_TYPE_KIND(nohost) OPENMP_DEVICE_TYPE_KIND(any) +// Clauses allowed for OpenMP directive 'declare variant'. +OPENMP_DECLARE_VARIANT_CLAUSE(match) + +#undef OPENMP_DECLARE_VARIANT_CLAUSE #undef OPENMP_DEVICE_TYPE_KIND #undef OPENMP_ALLOCATE_CLAUSE #undef OPENMP_DECLARE_MAPPER_CLAUSE Modified: cfe/trunk/include/clang/Basic/OpenMPKinds.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/OpenMPKinds.h?rev=372635&r1=372634&r2=372635&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/OpenMPKinds.h (original) +++ cfe/trunk/include/clang/Basic/OpenMPKinds.h Mon Sep 23 11:13:31 2019 @@ -36,6 +36,7 @@ enum OpenMPClauseKind { OMPC_threadprivate, OMPC_uniform, OMPC_device_type, + OMPC_match, OMPC_unknown }; Modified: cfe/trunk/lib/AST/ASTTypeTraits.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTTypeTraits.cpp?rev=372635&r1=372634&r2=372635&view=diff ============================================================================== --- cfe/trunk/lib/AST/ASTTypeTraits.cpp (original) +++ cfe/trunk/lib/AST/ASTTypeTraits.cpp Mon Sep 23 11:13:31 2019 @@ -117,6 +117,7 @@ ASTNodeKind ASTNodeKind::getFromNode(con case OMPC_threadprivate: case OMPC_uniform: case OMPC_device_type: + case OMPC_match: case OMPC_unknown: llvm_unreachable("unexpected OpenMP clause kind"); } Modified: cfe/trunk/lib/AST/OpenMPClause.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/OpenMPClause.cpp?rev=372635&r1=372634&r2=372635&view=diff ============================================================================== --- cfe/trunk/lib/AST/OpenMPClause.cpp (original) +++ cfe/trunk/lib/AST/OpenMPClause.cpp Mon Sep 23 11:13:31 2019 @@ -44,6 +44,7 @@ OMPClause::child_range OMPClause::used_c case OMPC_threadprivate: case OMPC_uniform: case OMPC_device_type: + case OMPC_match: case OMPC_unknown: break; } @@ -129,6 +130,7 @@ const OMPClauseWithPreInit *OMPClauseWit case OMPC_dynamic_allocators: case OMPC_atomic_default_mem_order: case OMPC_device_type: + case OMPC_match: break; } @@ -206,6 +208,7 @@ const OMPClauseWithPostUpdate *OMPClause case OMPC_dynamic_allocators: case OMPC_atomic_default_mem_order: case OMPC_device_type: + case OMPC_match: break; } Modified: cfe/trunk/lib/Basic/OpenMPKinds.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/OpenMPKinds.cpp?rev=372635&r1=372634&r2=372635&view=diff ============================================================================== --- cfe/trunk/lib/Basic/OpenMPKinds.cpp (original) +++ cfe/trunk/lib/Basic/OpenMPKinds.cpp Mon Sep 23 11:13:31 2019 @@ -56,6 +56,7 @@ OpenMPClauseKind clang::getOpenMPClauseK #include "clang/Basic/OpenMPKinds.def" .Case("uniform", OMPC_uniform) .Case("device_type", OMPC_device_type) + .Case("match", OMPC_match) .Default(OMPC_unknown); } @@ -74,6 +75,8 @@ const char *clang::getOpenMPClauseName(O return "threadprivate or thread local"; case OMPC_device_type: return "device_type"; + case OMPC_match: + return "match"; } llvm_unreachable("Invalid OpenMP clause kind"); } @@ -200,6 +203,7 @@ unsigned clang::getOpenMPSimpleClauseTyp case OMPC_unified_shared_memory: case OMPC_reverse_offload: case OMPC_dynamic_allocators: + case OMPC_match: break; } llvm_unreachable("Invalid OpenMP simple clause kind"); @@ -393,6 +397,7 @@ const char *clang::getOpenMPSimpleClause case OMPC_unified_shared_memory: case OMPC_reverse_offload: case OMPC_dynamic_allocators: + case OMPC_match: break; } llvm_unreachable("Invalid OpenMP simple clause kind"); @@ -836,6 +841,16 @@ bool clang::isAllowedClauseForDirective( break; } break; + case OMPD_declare_variant: + switch (CKind) { +#define OPENMP_DECLARE_VARIANT_CLAUSE(Name) \ + case OMPC_##Name: \ + return true; +#include "clang/Basic/OpenMPKinds.def" + default: + break; + } + break; case OMPD_declare_target: case OMPD_end_declare_target: case OMPD_unknown: @@ -848,7 +863,6 @@ bool clang::isAllowedClauseForDirective( case OMPD_cancellation_point: case OMPD_declare_reduction: case OMPD_declare_simd: - case OMPD_declare_variant: break; } return false; Modified: cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp?rev=372635&r1=372634&r2=372635&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp (original) +++ cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp Mon Sep 23 11:13:31 2019 @@ -4038,6 +4038,7 @@ static void emitOMPAtomicExpr(CodeGenFun case OMPC_dynamic_allocators: case OMPC_atomic_default_mem_order: case OMPC_device_type: + case OMPC_match: llvm_unreachable("Clause is not allowed in 'omp atomic'."); } } Modified: cfe/trunk/lib/Parse/ParseOpenMP.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseOpenMP.cpp?rev=372635&r1=372634&r2=372635&view=diff ============================================================================== --- cfe/trunk/lib/Parse/ParseOpenMP.cpp (original) +++ cfe/trunk/lib/Parse/ParseOpenMP.cpp Mon Sep 23 11:13:31 2019 @@ -796,7 +796,7 @@ bool Parser::parseOpenMPContextSelectors // Parse inner context selector set name. if (!Tok.is(tok::identifier)) { Diag(Tok.getLocation(), diag::err_omp_declare_variant_no_ctx_selector) - << "match"; + << getOpenMPClauseName(OMPC_match); return true; } SmallString<16> Buffer; @@ -863,9 +863,12 @@ void Parser::ParseOMPDeclareVariantClaus Ptr, AssociatedFunction.get(), SourceRange(Loc, Tok.getLocation())); // Parse 'match'. - if (!Tok.is(tok::identifier) || PP.getSpelling(Tok).compare("match")) { + OpenMPClauseKind CKind = Tok.isAnnotation() + ? OMPC_unknown + : getOpenMPClauseKind(PP.getSpelling(Tok)); + if (CKind != OMPC_match) { Diag(Tok.getLocation(), diag::err_omp_declare_variant_wrong_clause) - << "match"; + << getOpenMPClauseName(OMPC_match); while (!SkipUntil(tok::annot_pragma_openmp_end, Parser::StopBeforeMatch)) ; // Skip the last annot_pragma_openmp_end. @@ -875,7 +878,8 @@ void Parser::ParseOMPDeclareVariantClaus (void)ConsumeToken(); // Parse '('. BalancedDelimiterTracker T(*this, tok::l_paren, tok::annot_pragma_openmp_end); - if (T.expectAndConsume(diag::err_expected_lparen_after, "match")) { + if (T.expectAndConsume(diag::err_expected_lparen_after, + getOpenMPClauseName(OMPC_match))) { while (!SkipUntil(tok::annot_pragma_openmp_end, StopBeforeMatch)) ; // Skip the last annot_pragma_openmp_end. @@ -1950,6 +1954,7 @@ OMPClause *Parser::ParseOpenMPClause(Ope break; case OMPC_threadprivate: case OMPC_uniform: + case OMPC_match: if (!WrongDirective) Diag(Tok, diag::err_omp_unexpected_clause) << getOpenMPClauseName(CKind) << getOpenMPDirectiveName(DKind); Modified: cfe/trunk/lib/Sema/SemaOpenMP.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaOpenMP.cpp?rev=372635&r1=372634&r2=372635&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaOpenMP.cpp (original) +++ cfe/trunk/lib/Sema/SemaOpenMP.cpp Mon Sep 23 11:13:31 2019 @@ -4599,6 +4599,7 @@ StmtResult Sema::ActOnOpenMPExecutableDi case OMPC_dynamic_allocators: case OMPC_atomic_default_mem_order: case OMPC_device_type: + case OMPC_match: llvm_unreachable("Unexpected clause"); } for (Stmt *CC : C->children()) { @@ -10065,6 +10066,7 @@ OMPClause *Sema::ActOnOpenMPSingleExprCl case OMPC_dynamic_allocators: case OMPC_atomic_default_mem_order: case OMPC_device_type: + case OMPC_match: llvm_unreachable("Clause is not allowed."); } return Res; @@ -10615,6 +10617,7 @@ static OpenMPDirectiveKind getOpenMPCapt case OMPC_dynamic_allocators: case OMPC_atomic_default_mem_order: case OMPC_device_type: + case OMPC_match: llvm_unreachable("Unexpected OpenMP clause."); } return CaptureRegion; @@ -11009,6 +11012,7 @@ OMPClause *Sema::ActOnOpenMPSimpleClause case OMPC_reverse_offload: case OMPC_dynamic_allocators: case OMPC_device_type: + case OMPC_match: llvm_unreachable("Clause is not allowed."); } return Res; @@ -11188,6 +11192,7 @@ OMPClause *Sema::ActOnOpenMPSingleExprWi case OMPC_dynamic_allocators: case OMPC_atomic_default_mem_order: case OMPC_device_type: + case OMPC_match: llvm_unreachable("Clause is not allowed."); } return Res; @@ -11398,6 +11403,7 @@ OMPClause *Sema::ActOnOpenMPClause(OpenM case OMPC_is_device_ptr: case OMPC_atomic_default_mem_order: case OMPC_device_type: + case OMPC_match: llvm_unreachable("Clause is not allowed."); } return Res; @@ -11605,6 +11611,7 @@ OMPClause *Sema::ActOnOpenMPVarListClaus case OMPC_dynamic_allocators: case OMPC_atomic_default_mem_order: case OMPC_device_type: + case OMPC_match: llvm_unreachable("Clause is not allowed."); } return Res; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits