diff options
author | John McCall <rjmccall@apple.com> | 2019-12-14 03:01:28 -0500 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2019-12-14 03:28:23 -0500 |
commit | c2f18315ff53006e44afe065368019e41cb98053 (patch) | |
tree | 865413702b7ac1f03cb886f6780462ed1b141a06 /clang/lib/Serialization/ASTReader.cpp | |
parent | 816985c12053e0f0654e28e1a517799954ea5360 (diff) | |
download | bcm5719-llvm-c2f18315ff53006e44afe065368019e41cb98053.tar.gz bcm5719-llvm-c2f18315ff53006e44afe065368019e41cb98053.zip |
Move ASTRecordReader into its own header; NFC.
AbstractBasicReader.h has quite a few dependencies already,
and that's only likely to increase. Meanwhile, ASTRecordReader
is really an implementation detail of the ASTReader that is only
used in a small number of places.
I've kept it in a public header for the use of projects like Swift
that might want to plug in to Clang's serialization framework.
I've also moved OMPClauseReader into an implementation file,
although it can't be made private because of friendship.
Diffstat (limited to 'clang/lib/Serialization/ASTReader.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index c85cfcd3a33..a2e4e7b469c 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -10,7 +10,7 @@ // //===----------------------------------------------------------------------===// -#include "clang/Serialization/ASTReader.h" +#include "clang/Serialization/ASTRecordReader.h" #include "ASTCommon.h" #include "ASTReaderInternals.h" #include "clang/AST/AbstractTypeReader.h" @@ -30,6 +30,7 @@ #include "clang/AST/ExprCXX.h" #include "clang/AST/ExternalASTSource.h" #include "clang/AST/NestedNameSpecifier.h" +#include "clang/AST/OpenMPClause.h" #include "clang/AST/ODRHash.h" #include "clang/AST/RawCommentList.h" #include "clang/AST/TemplateBase.h" @@ -11471,6 +11472,31 @@ Expected<unsigned> ASTRecordReader::readRecord(llvm::BitstreamCursor &Cursor, //// OMPClauseReader implementation ////===----------------------------------------------------------------------===// +// This has to be in namespace clang because it's friended by all +// of the OMP clauses. +namespace clang { + +class OMPClauseReader : public OMPClauseVisitor<OMPClauseReader> { + ASTRecordReader &Record; + ASTContext &Context; + +public: + OMPClauseReader(ASTRecordReader &Record) + : Record(Record), Context(Record.getContext()) {} + +#define OPENMP_CLAUSE(Name, Class) void Visit##Class(Class *C); +#include "clang/Basic/OpenMPKinds.def" + OMPClause *readClause(); + void VisitOMPClauseWithPreInit(OMPClauseWithPreInit *C); + void VisitOMPClauseWithPostUpdate(OMPClauseWithPostUpdate *C); +}; + +} // end namespace clang + +OMPClause *ASTRecordReader::readOMPClause() { + return OMPClauseReader(*this).readClause(); +} + OMPClause *OMPClauseReader::readClause() { OMPClause *C = nullptr; switch (Record.readInt()) { |