diff options
Diffstat (limited to 'contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp')
-rw-r--r-- | contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp b/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp index 5db5f92..8dd53ee 100644 --- a/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp +++ b/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp @@ -13,6 +13,7 @@ //===----------------------------------------------------------------------===// #include "ASTCommon.h" +#include "ASTReaderInternals.h" #include "clang/Serialization/ASTReader.h" #include "clang/Sema/IdentifierResolver.h" #include "clang/Sema/Sema.h" @@ -955,6 +956,10 @@ void ASTDeclReader::VisitBlockDecl(BlockDecl *BD) { Params.push_back(ReadDeclAs<ParmVarDecl>(Record, Idx)); BD->setParams(Params); + BD->setIsVariadic(Record[Idx++]); + BD->setBlockMissingReturnType(Record[Idx++]); + BD->setIsConversionFromLambda(Record[Idx++]); + bool capturesCXXThis = Record[Idx++]; unsigned numCaptures = Record[Idx++]; SmallVector<BlockDecl::Capture, 16> captures; @@ -2100,7 +2105,9 @@ Decl *ASTReader::ReadDeclRecord(DeclID ID) { DeclContextVisibleUpdates &U = I->second; for (DeclContextVisibleUpdates::iterator UI = U.begin(), UE = U.end(); UI != UE; ++UI) { - UI->second->DeclContextInfos[DC].NameLookupTableData = UI->first; + DeclContextInfo &Info = UI->second->DeclContextInfos[DC]; + delete Info.NameLookupTableData; + Info.NameLookupTableData = UI->first; } PendingVisibleUpdates.erase(I); } |