diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2019-03-12 18:52:33 +0000 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2019-03-12 18:52:33 +0000 |
commit | 9cc10fc926526139559a88d1ac2b13f563cba7f3 (patch) | |
tree | b75e2a82a4ab49ebd2f0eec49ff43ed33bafa748 /clang/lib/Serialization/ASTReaderDecl.cpp | |
parent | 85c2955f455ef12fc2c466b98794f9606684d070 (diff) | |
download | bcm5719-llvm-9cc10fc926526139559a88d1ac2b13f563cba7f3.tar.gz bcm5719-llvm-9cc10fc926526139559a88d1ac2b13f563cba7f3.zip |
[OPENMP 5.0]Initial support for 'allocator' clause.
Added parsing/sema analysis/serialization/deserialization for the
'allocator' clause of the 'allocate' directive.
llvm-svn: 355952
Diffstat (limited to 'clang/lib/Serialization/ASTReaderDecl.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTReaderDecl.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp index 760489d172d..f37372fcb08 100644 --- a/clang/lib/Serialization/ASTReaderDecl.cpp +++ b/clang/lib/Serialization/ASTReaderDecl.cpp @@ -2637,12 +2637,19 @@ void ASTDeclReader::VisitOMPThreadPrivateDecl(OMPThreadPrivateDecl *D) { void ASTDeclReader::VisitOMPAllocateDecl(OMPAllocateDecl *D) { VisitDecl(D); unsigned NumVars = D->varlist_size(); + unsigned NumClauses = D->clauselist_size(); SmallVector<Expr *, 16> Vars; Vars.reserve(NumVars); for (unsigned i = 0; i != NumVars; ++i) { Vars.push_back(Record.readExpr()); } D->setVars(Vars); + SmallVector<OMPClause *, 8> Clauses; + Clauses.reserve(NumClauses); + OMPClauseReader ClauseReader(Record); + for (unsigned I = 0; I != NumClauses; ++I) + Clauses.push_back(ClauseReader.readClause()); + D->setClauses(Clauses); } void ASTDeclReader::VisitOMPRequiresDecl(OMPRequiresDecl * D) { @@ -3878,9 +3885,12 @@ Decl *ASTReader::ReadDeclRecord(DeclID ID) { case DECL_OMP_THREADPRIVATE: D = OMPThreadPrivateDecl::CreateDeserialized(Context, ID, Record.readInt()); break; - case DECL_OMP_ALLOCATE: - D = OMPAllocateDecl::CreateDeserialized(Context, ID, Record.readInt()); + case DECL_OMP_ALLOCATE: { + unsigned NumVars = Record.readInt(); + unsigned NumClauses = Record.readInt(); + D = OMPAllocateDecl::CreateDeserialized(Context, ID, NumVars, NumClauses); break; + } case DECL_OMP_REQUIRES: D = OMPRequiresDecl::CreateDeserialized(Context, ID, Record.readInt()); break; @@ -4481,8 +4491,8 @@ void ASTDeclReader::UpdateDecl(Decl *D, break; case UPD_DECL_MARKED_OPENMP_ALLOCATE: - D->addAttr(OMPAllocateDeclAttr::CreateImplicit(Reader.getContext(), - ReadSourceRange())); + D->addAttr(OMPAllocateDeclAttr::CreateImplicit( + Reader.getContext(), Record.readExpr(), ReadSourceRange())); break; case UPD_DECL_EXPORTED: { |