diff options
| author | Alexey Bataev <a.bataev@hotmail.com> | 2016-03-04 09:22:22 +0000 |
|---|---|---|
| committer | Alexey Bataev <a.bataev@hotmail.com> | 2016-03-04 09:22:22 +0000 |
| commit | c5b1d320b856559db375e8effc2fe9b04bfaf6ee (patch) | |
| tree | 46c64c995cf2180a8a7c9ff2d54e6c18ccc9b72f /clang/lib/Serialization | |
| parent | 678f65a9b4d808fe2f476c43d5acc884927c0377 (diff) | |
| download | bcm5719-llvm-c5b1d320b856559db375e8effc2fe9b04bfaf6ee.tar.gz bcm5719-llvm-c5b1d320b856559db375e8effc2fe9b04bfaf6ee.zip | |
[OPENMP 4.0] Codegen for 'declare reduction' construct.
Emit function for 'combiner' part of 'declare reduction' construct and
'initialilzer' part, if any.
llvm-svn: 262699
Diffstat (limited to 'clang/lib/Serialization')
| -rw-r--r-- | clang/lib/Serialization/ASTReaderDecl.cpp | 9 | ||||
| -rw-r--r-- | clang/lib/Serialization/ASTWriterDecl.cpp | 3 |
2 files changed, 5 insertions, 7 deletions
diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp index 2389d671d42..1e93627df8d 100644 --- a/clang/lib/Serialization/ASTReaderDecl.cpp +++ b/clang/lib/Serialization/ASTReaderDecl.cpp @@ -2396,12 +2396,11 @@ void ASTDeclReader::VisitOMPThreadPrivateDecl(OMPThreadPrivateDecl *D) { } void ASTDeclReader::VisitOMPDeclareReductionDecl(OMPDeclareReductionDecl *D) { - VisitNamedDecl(D); + VisitValueDecl(D); D->setLocation(Reader.ReadSourceLocation(F, Record, Idx)); D->setCombiner(Reader.ReadExpr(F)); D->setInitializer(Reader.ReadExpr(F)); D->PrevDeclInScope = Reader.ReadDeclID(F, Record, Idx); - D->setType(Reader.readType(F, Record, Idx)); } void ASTDeclReader::VisitOMPCapturedExprDecl(OMPCapturedExprDecl *D) { @@ -2458,10 +2457,10 @@ static bool isConsumerInterestedIn(Decl *D, bool HasBody) { isa<ObjCImplDecl>(D) || isa<ImportDecl>(D) || isa<PragmaCommentDecl>(D) || - isa<PragmaDetectMismatchDecl>(D) || - isa<OMPThreadPrivateDecl>(D) || - isa<OMPDeclareReductionDecl>(D)) + isa<PragmaDetectMismatchDecl>(D)) return true; + if (isa<OMPThreadPrivateDecl>(D) || isa<OMPDeclareReductionDecl>(D)) + return !D->getDeclContext()->isFunctionOrMethod(); if (VarDecl *Var = dyn_cast<VarDecl>(D)) return Var->isFileVarDecl() && Var->isThisDeclarationADefinition() == VarDecl::Definition; diff --git a/clang/lib/Serialization/ASTWriterDecl.cpp b/clang/lib/Serialization/ASTWriterDecl.cpp index 88b74a4b4c5..6c81b9e53c1 100644 --- a/clang/lib/Serialization/ASTWriterDecl.cpp +++ b/clang/lib/Serialization/ASTWriterDecl.cpp @@ -1655,12 +1655,11 @@ void ASTDeclWriter::VisitOMPThreadPrivateDecl(OMPThreadPrivateDecl *D) { } void ASTDeclWriter::VisitOMPDeclareReductionDecl(OMPDeclareReductionDecl *D) { - VisitNamedDecl(D); + VisitValueDecl(D); Writer.AddSourceLocation(D->getLocStart(), Record); Writer.AddStmt(D->getCombiner()); Writer.AddStmt(D->getInitializer()); Writer.AddDeclRef(D->getPrevDeclInScope(), Record); - Writer.AddTypeRef(D->getType(), Record); Code = serialization::DECL_OMP_DECLARE_REDUCTION; } |

