diff options
author | Kelvin Li <kkwli0@gmail.com> | 2016-12-29 22:16:30 +0000 |
---|---|---|
committer | Kelvin Li <kkwli0@gmail.com> | 2016-12-29 22:16:30 +0000 |
commit | 1008244ce7090576ea3a33e38017c893f30a97ab (patch) | |
tree | 8bd5b4918b723b0b6ad052594586af2fc0ff2651 /lib/Parse | |
parent | a7c050e2d7075d551e72d78286a5f05083dc64b0 (diff) |
[OpenMP] Sema and parsing for 'target teams distribute parallel for’ pragma
This patch is to implement sema and parsing for 'target teams distribute parallel for’ pragma.
Differential Revision: https://reviews.llvm.org/D28160
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290725 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse')
-rw-r--r-- | lib/Parse/ParseOpenMP.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/Parse/ParseOpenMP.cpp b/lib/Parse/ParseOpenMP.cpp index f7a6049d56..061721dfb8 100644 --- a/lib/Parse/ParseOpenMP.cpp +++ b/lib/Parse/ParseOpenMP.cpp @@ -40,7 +40,8 @@ enum OpenMPDirectiveKindEx { OMPD_target_exit, OMPD_update, OMPD_distribute_parallel, - OMPD_teams_distribute_parallel + OMPD_teams_distribute_parallel, + OMPD_target_teams_distribute_parallel }; class ThreadprivateListParserHelper final { @@ -116,7 +117,9 @@ static OpenMPDirectiveKind ParseOpenMPDirectiveKind(Parser &P) { { 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, OMPD_distribute, OMPD_target_teams_distribute }, + { OMPD_target_teams_distribute, OMPD_parallel, OMPD_target_teams_distribute_parallel }, + { OMPD_target_teams_distribute_parallel, OMPD_for, OMPD_target_teams_distribute_parallel_for } }; enum { CancellationPoint = 0, DeclareReduction = 1, TargetData = 2 }; auto Tok = P.getCurToken(); @@ -754,6 +757,7 @@ Parser::DeclGroupPtrTy Parser::ParseOpenMPDeclarativeDirectiveWithExtDecl( case OMPD_teams_distribute_parallel_for: case OMPD_target_teams: case OMPD_target_teams_distribute: + case OMPD_target_teams_distribute_parallel_for: Diag(Tok, diag::err_omp_unexpected_directive) << getOpenMPDirectiveName(DKind); break; @@ -790,8 +794,9 @@ Parser::DeclGroupPtrTy Parser::ParseOpenMPDeclarativeDirectiveWithExtDecl( /// 'target parallel for simd' | 'target simd' | /// 'teams distribute' | 'teams distribute simd' | /// 'teams distribute parallel for simd' | -/// 'teams distribute parallel for' | 'target teams' -/// 'target teams distribute' {clause} +/// 'teams distribute parallel for' | 'target teams' | +/// 'target teams distribute' | +/// 'target teams distribute parallel for' {clause} /// annot_pragma_openmp_end /// StmtResult Parser::ParseOpenMPDeclarativeOrExecutableDirective( @@ -906,7 +911,8 @@ StmtResult Parser::ParseOpenMPDeclarativeOrExecutableDirective( case OMPD_teams_distribute_parallel_for_simd: case OMPD_teams_distribute_parallel_for: case OMPD_target_teams: - case OMPD_target_teams_distribute: { + case OMPD_target_teams_distribute: + case OMPD_target_teams_distribute_parallel_for: { ConsumeToken(); // Parse directive name of the 'critical' directive if any. if (DKind == OMPD_critical) { |