summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParseOpenMP.cpp
diff options
context:
space:
mode:
authorKelvin Li <kkwli0@gmail.com>2016-12-25 04:52:54 +0000
committerKelvin Li <kkwli0@gmail.com>2016-12-25 04:52:54 +0000
commit83c451e9986e2d2ccd28395595465d69f0d4db6e (patch)
tree75c1356a97696a372040aaf0cf1364b8b9f1ee4c /clang/lib/Parse/ParseOpenMP.cpp
parent690952d15e6e21cd42a7c99e0941dc983e608866 (diff)
downloadbcm5719-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.cpp10
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) {
OpenPOWER on IntegriCloud