summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2016-03-04 09:22:22 +0000
committerAlexey Bataev <a.bataev@hotmail.com>2016-03-04 09:22:22 +0000
commitc5b1d320b856559db375e8effc2fe9b04bfaf6ee (patch)
tree46c64c995cf2180a8a7c9ff2d54e6c18ccc9b72f /clang/lib/Serialization
parent678f65a9b4d808fe2f476c43d5acc884927c0377 (diff)
downloadbcm5719-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.cpp9
-rw-r--r--clang/lib/Serialization/ASTWriterDecl.cpp3
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;
}
OpenPOWER on IntegriCloud