diff options
author | Carlo Bertolli <cbertol@us.ibm.com> | 2017-05-03 15:28:48 +0000 |
---|---|---|
committer | Carlo Bertolli <cbertol@us.ibm.com> | 2017-05-03 15:28:48 +0000 |
commit | d8844b9d438e17304bcb28e3245adfa57c710097 (patch) | |
tree | 42e1397a34e10f3d2f8218bafd87715dedb5872b /clang/lib/Parse/ParseOpenMP.cpp | |
parent | 4be9d92b69c073abe078e22cb6ebae6f99f4c3da (diff) | |
download | llvm-d8844b9d438e17304bcb28e3245adfa57c710097.zip llvm-d8844b9d438e17304bcb28e3245adfa57c710097.tar.gz llvm-d8844b9d438e17304bcb28e3245adfa57c710097.tar.bz2 |
[OpenMP] Extended parse for 'always' map modifier
https://reviews.llvm.org/D32807
This patch allows the map modifier 'always' to be separated by the map type (to, from, tofrom) only by a whitespace, rather than strictly by a comma as in current trunk.
llvm-svn: 302031
Diffstat (limited to 'clang/lib/Parse/ParseOpenMP.cpp')
-rw-r--r-- | clang/lib/Parse/ParseOpenMP.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/clang/lib/Parse/ParseOpenMP.cpp b/clang/lib/Parse/ParseOpenMP.cpp index dfb0438..86ac035 100644 --- a/clang/lib/Parse/ParseOpenMP.cpp +++ b/clang/lib/Parse/ParseOpenMP.cpp @@ -1690,6 +1690,30 @@ bool Parser::ParseOpenMPVarList(OpenMPDirectiveKind DKind, Data.MapType = OMPC_MAP_tofrom; Data.IsMapTypeImplicit = true; } + } else if (IsMapClauseModifierToken(PP.LookAhead(0))) { + if (PP.LookAhead(1).is(tok::colon)) { + Data.MapTypeModifier = Data.MapType; + if (Data.MapTypeModifier != OMPC_MAP_always) { + Diag(Tok, diag::err_omp_unknown_map_type_modifier); + Data.MapTypeModifier = OMPC_MAP_unknown; + } else + MapTypeModifierSpecified = true; + + ConsumeToken(); + + Data.MapType = + IsMapClauseModifierToken(Tok) + ? static_cast<OpenMPMapClauseKind>( + getOpenMPSimpleClauseType(Kind, PP.getSpelling(Tok))) + : OMPC_MAP_unknown; + if (Data.MapType == OMPC_MAP_unknown || + Data.MapType == OMPC_MAP_always) + Diag(Tok, diag::err_omp_unknown_map_type); + ConsumeToken(); + } else { + Data.MapType = OMPC_MAP_tofrom; + Data.IsMapTypeImplicit = true; + } } else { Data.MapType = OMPC_MAP_tofrom; Data.IsMapTypeImplicit = true; |