diff options
| author | Alexander Musman <alexander.musman@gmail.com> | 2014-06-04 13:06:39 +0000 |
|---|---|---|
| committer | Alexander Musman <alexander.musman@gmail.com> | 2014-06-04 13:06:39 +0000 |
| commit | 1bb328cca568d7031a588ba3a19b8a472bd50c33 (patch) | |
| tree | a8a76cecb9af199f5272c655b7e01e51af01ebd9 /clang/lib/Serialization | |
| parent | a69ca9be127f26e22053243f7562d1079339314f (diff) | |
| download | bcm5719-llvm-1bb328cca568d7031a588ba3a19b8a472bd50c33.tar.gz bcm5719-llvm-1bb328cca568d7031a588ba3a19b8a472bd50c33.zip | |
[OPENMP] Parsing/Sema for OMPLasprivateClause.
Parsing this clause, allowing it on directive ‘omp simd’ and semantic checks.
llvm-svn: 210184
Diffstat (limited to 'clang/lib/Serialization')
| -rw-r--r-- | clang/lib/Serialization/ASTReaderStmt.cpp | 13 | ||||
| -rw-r--r-- | clang/lib/Serialization/ASTWriterStmt.cpp | 7 |
2 files changed, 20 insertions, 0 deletions
diff --git a/clang/lib/Serialization/ASTReaderStmt.cpp b/clang/lib/Serialization/ASTReaderStmt.cpp index f7031da7a36..7a4c8b0282e 100644 --- a/clang/lib/Serialization/ASTReaderStmt.cpp +++ b/clang/lib/Serialization/ASTReaderStmt.cpp @@ -1697,6 +1697,9 @@ OMPClause *OMPClauseReader::readClause() { case OMPC_firstprivate: C = OMPFirstprivateClause::CreateEmpty(Context, Record[Idx++]); break; + case OMPC_lastprivate: + C = OMPLastprivateClause::CreateEmpty(Context, Record[Idx++]); + break; case OMPC_shared: C = OMPSharedClause::CreateEmpty(Context, Record[Idx++]); break; @@ -1771,6 +1774,16 @@ void OMPClauseReader::VisitOMPFirstprivateClause(OMPFirstprivateClause *C) { C->setVarRefs(Vars); } +void OMPClauseReader::VisitOMPLastprivateClause(OMPLastprivateClause *C) { + C->setLParenLoc(Reader->ReadSourceLocation(Record, Idx)); + unsigned NumVars = C->varlist_size(); + SmallVector<Expr *, 16> Vars; + Vars.reserve(NumVars); + for (unsigned i = 0; i != NumVars; ++i) + Vars.push_back(Reader->Reader.ReadSubExpr()); + C->setVarRefs(Vars); +} + void OMPClauseReader::VisitOMPSharedClause(OMPSharedClause *C) { C->setLParenLoc(Reader->ReadSourceLocation(Record, Idx)); unsigned NumVars = C->varlist_size(); diff --git a/clang/lib/Serialization/ASTWriterStmt.cpp b/clang/lib/Serialization/ASTWriterStmt.cpp index 2adf86978ab..c5fb9b17037 100644 --- a/clang/lib/Serialization/ASTWriterStmt.cpp +++ b/clang/lib/Serialization/ASTWriterStmt.cpp @@ -1721,6 +1721,13 @@ void OMPClauseWriter::VisitOMPFirstprivateClause(OMPFirstprivateClause *C) { Writer->Writer.AddStmt(VE); } +void OMPClauseWriter::VisitOMPLastprivateClause(OMPLastprivateClause *C) { + Record.push_back(C->varlist_size()); + Writer->Writer.AddSourceLocation(C->getLParenLoc(), Record); + for (auto *VE : C->varlists()) + Writer->Writer.AddStmt(VE); +} + void OMPClauseWriter::VisitOMPSharedClause(OMPSharedClause *C) { Record.push_back(C->varlist_size()); Writer->Writer.AddSourceLocation(C->getLParenLoc(), Record); |

