summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParseOpenMP.cpp
diff options
context:
space:
mode:
authorAlexander Musman <alexander.musman@gmail.com>2014-05-29 14:36:25 +0000
committerAlexander Musman <alexander.musman@gmail.com>2014-05-29 14:36:25 +0000
commitf0d76e7dc3e5ca3969e44fd40417a0e568493a4e (patch)
tree15545611be68d7376c675f090b963a20e7046ec5 /clang/lib/Parse/ParseOpenMP.cpp
parentfa5c0750f0fa18424de62878f0d717fee861cb9d (diff)
downloadbcm5719-llvm-f0d76e7dc3e5ca3969e44fd40417a0e568493a4e.tar.gz
bcm5719-llvm-f0d76e7dc3e5ca3969e44fd40417a0e568493a4e.zip
Parsing/Sema for OMPAlignedClause.
llvm-svn: 209816
Diffstat (limited to 'clang/lib/Parse/ParseOpenMP.cpp')
-rw-r--r--clang/lib/Parse/ParseOpenMP.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/clang/lib/Parse/ParseOpenMP.cpp b/clang/lib/Parse/ParseOpenMP.cpp
index c053aac3400..e293148b0af 100644
--- a/clang/lib/Parse/ParseOpenMP.cpp
+++ b/clang/lib/Parse/ParseOpenMP.cpp
@@ -255,7 +255,7 @@ bool Parser::ParseOpenMPSimpleVarList(OpenMPDirectiveKind Kind,
/// clause:
/// if-clause | num_threads-clause | safelen-clause | default-clause |
/// private-clause | firstprivate-clause | shared-clause | linear-clause |
-/// collapse-clause
+/// aligned-clause | collapse-clause
///
OMPClause *Parser::ParseOpenMPClause(OpenMPDirectiveKind DKind,
OpenMPClauseKind CKind, bool FirstClause) {
@@ -304,6 +304,7 @@ OMPClause *Parser::ParseOpenMPClause(OpenMPDirectiveKind DKind,
case OMPC_firstprivate:
case OMPC_shared:
case OMPC_linear:
+ case OMPC_aligned:
case OMPC_copyin:
Clause = ParseOpenMPVarListClause(CKind);
break;
@@ -400,6 +401,8 @@ OMPClause *Parser::ParseOpenMPSimpleClause(OpenMPClauseKind Kind) {
/// 'shared' '(' list ')'
/// linear-clause:
/// 'linear' '(' list [ ':' linear-step ] ')'
+/// aligned-clause:
+/// 'aligned' '(' list [ ':' alignment ] ')'
///
OMPClause *Parser::ParseOpenMPVarListClause(OpenMPClauseKind Kind) {
SourceLocation Loc = Tok.getLocation();
@@ -413,7 +416,7 @@ OMPClause *Parser::ParseOpenMPVarListClause(OpenMPClauseKind Kind) {
SmallVector<Expr *, 5> Vars;
bool IsComma = true;
- const bool MayHaveTail = (Kind == OMPC_linear);
+ const bool MayHaveTail = (Kind == OMPC_linear || Kind == OMPC_aligned);
while (IsComma || (Tok.isNot(tok::r_paren) && Tok.isNot(tok::colon) &&
Tok.isNot(tok::annot_pragma_openmp_end))) {
ColonProtectionRAIIObject ColonRAII(*this, MayHaveTail);
@@ -435,7 +438,7 @@ OMPClause *Parser::ParseOpenMPVarListClause(OpenMPClauseKind Kind) {
Diag(Tok, diag::err_omp_expected_punc) << getOpenMPClauseName(Kind);
}
- // Parse ':' linear-step
+ // Parse ':' linear-step (or ':' alignment).
Expr *TailExpr = nullptr;
const bool MustHaveTail = MayHaveTail && Tok.is(tok::colon);
if (MustHaveTail) {
OpenPOWER on IntegriCloud