From bf594a560089552d861d72764256fa469296b97b Mon Sep 17 00:00:00 2001 From: Kelvin Li Date: Sat, 17 Dec 2016 05:48:59 +0000 Subject: [OpenMP] Sema and parsing for 'target teams' pragma This patch is to implement sema and parsing for 'target teams' pragma. Differential Revision: https://reviews.llvm.org/D27818 llvm-svn: 290038 --- clang/lib/Basic/OpenMPKinds.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'clang/lib/Basic/OpenMPKinds.cpp') diff --git a/clang/lib/Basic/OpenMPKinds.cpp b/clang/lib/Basic/OpenMPKinds.cpp index 025936ef6df..31eb2e9afb6 100644 --- a/clang/lib/Basic/OpenMPKinds.cpp +++ b/clang/lib/Basic/OpenMPKinds.cpp @@ -655,6 +655,16 @@ bool clang::isAllowedClauseForDirective(OpenMPDirectiveKind DKind, #define OPENMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_CLAUSE(Name) \ case OMPC_##Name: \ return true; +#include "clang/Basic/OpenMPKinds.def" + default: + break; + } + break; + case OMPD_target_teams: + switch (CKind) { +#define OPENMP_TARGET_TEAMS_CLAUSE(Name) \ + case OMPC_##Name: \ + return true; #include "clang/Basic/OpenMPKinds.def" default: break; @@ -724,10 +734,10 @@ bool clang::isOpenMPParallelDirective(OpenMPDirectiveKind DKind) { } bool clang::isOpenMPTargetExecutionDirective(OpenMPDirectiveKind DKind) { - // TODO add next directives. return DKind == OMPD_target || DKind == OMPD_target_parallel || DKind == OMPD_target_parallel_for || - DKind == OMPD_target_parallel_for_simd || DKind == OMPD_target_simd; + DKind == OMPD_target_parallel_for_simd || DKind == OMPD_target_simd || + DKind == OMPD_target_teams; } bool clang::isOpenMPTargetDataManagementDirective(OpenMPDirectiveKind DKind) { @@ -735,12 +745,16 @@ bool clang::isOpenMPTargetDataManagementDirective(OpenMPDirectiveKind DKind) { DKind == OMPD_target_exit_data || DKind == OMPD_target_update; } -bool clang::isOpenMPTeamsDirective(OpenMPDirectiveKind DKind) { +bool clang::isOpenMPNestingTeamsDirective(OpenMPDirectiveKind DKind) { return DKind == OMPD_teams || DKind == OMPD_teams_distribute || DKind == OMPD_teams_distribute_simd || DKind == OMPD_teams_distribute_parallel_for_simd || DKind == OMPD_teams_distribute_parallel_for; - // TODO add next directives. +} + +bool clang::isOpenMPTeamsDirective(OpenMPDirectiveKind DKind) { + return isOpenMPNestingTeamsDirective(DKind) || + DKind == OMPD_target_teams; } bool clang::isOpenMPSimdDirective(OpenMPDirectiveKind DKind) { -- cgit v1.2.3