diff options
author | Kelvin Li <kkwli0@gmail.com> | 2016-12-25 04:52:54 +0000 |
---|---|---|
committer | Kelvin Li <kkwli0@gmail.com> | 2016-12-25 04:52:54 +0000 |
commit | 83c451e9986e2d2ccd28395595465d69f0d4db6e (patch) | |
tree | 75c1356a97696a372040aaf0cf1364b8b9f1ee4c /clang/lib/Parse/ParseOpenMP.cpp | |
parent | 690952d15e6e21cd42a7c99e0941dc983e608866 (diff) | |
download | bcm5719-llvm-83c451e9986e2d2ccd28395595465d69f0d4db6e.tar.gz bcm5719-llvm-83c451e9986e2d2ccd28395595465d69f0d4db6e.zip |
[OpenMP] Sema and parsing for 'target teams distribute' pragma
This patch is to implement sema and parsing for 'target teams distribute' pragma.
Differential Revision: https://reviews.llvm.org/D28015
llvm-svn: 290508
Diffstat (limited to 'clang/lib/Parse/ParseOpenMP.cpp')
-rw-r--r-- | clang/lib/Parse/ParseOpenMP.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/clang/lib/Parse/ParseOpenMP.cpp b/clang/lib/Parse/ParseOpenMP.cpp index 36d463758eb..f7a6049d56e 100644 --- a/clang/lib/Parse/ParseOpenMP.cpp +++ b/clang/lib/Parse/ParseOpenMP.cpp @@ -115,7 +115,8 @@ static OpenMPDirectiveKind ParseOpenMPDirectiveKind(Parser &P) { { 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, OMPD_teams, OMPD_target_teams }, + { OMPD_target_teams, OMPD_distribute, OMPD_target_teams_distribute } }; enum { CancellationPoint = 0, DeclareReduction = 1, TargetData = 2 }; auto Tok = P.getCurToken(); @@ -752,6 +753,7 @@ Parser::DeclGroupPtrTy Parser::ParseOpenMPDeclarativeDirectiveWithExtDecl( case OMPD_teams_distribute_parallel_for_simd: case OMPD_teams_distribute_parallel_for: case OMPD_target_teams: + case OMPD_target_teams_distribute: Diag(Tok, diag::err_omp_unexpected_directive) << getOpenMPDirectiveName(DKind); break; @@ -788,7 +790,8 @@ 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' {clause} +/// 'teams distribute parallel for' | 'target teams' +/// 'target teams distribute' {clause} /// annot_pragma_openmp_end /// StmtResult Parser::ParseOpenMPDeclarativeOrExecutableDirective( @@ -902,7 +905,8 @@ StmtResult Parser::ParseOpenMPDeclarativeOrExecutableDirective( case OMPD_teams_distribute_simd: case OMPD_teams_distribute_parallel_for_simd: case OMPD_teams_distribute_parallel_for: - case OMPD_target_teams: { + case OMPD_target_teams: + case OMPD_target_teams_distribute: { ConsumeToken(); // Parse directive name of the 'critical' directive if any. if (DKind == OMPD_critical) { |