diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Serialization/ASTReader.cpp | 16 | ||||
-rw-r--r-- | lib/Serialization/ASTWriter.cpp | 4 |
2 files changed, 13 insertions, 7 deletions
diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index 95bc60260c..14094febe5 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/lib/Serialization/ASTReader.cpp @@ -4119,26 +4119,32 @@ TranslationUnitDecl *ASTReader::GetTranslationUnitDecl() { serialization::DeclID ASTReader::getGlobalDeclID(Module &F, unsigned LocalID) const { - if (LocalID == 0) + if (LocalID < NUM_PREDEF_DECL_IDS) return LocalID; ContinuousRangeMap<uint32_t, int, 2>::iterator I - = F.DeclRemap.find(LocalID - 1); + = F.DeclRemap.find(LocalID - NUM_PREDEF_DECL_IDS); assert(I != F.DeclRemap.end() && "Invalid index into decl index remap"); return LocalID + I->second; } Decl *ASTReader::GetDecl(DeclID ID) { - if (ID == 0) + if (ID < NUM_PREDEF_DECL_IDS) { + switch ((PredefinedDeclIDs)ID) { + case serialization::PREDEF_DECL_NULL_ID: + return 0; + } + return 0; - + } + if (ID > DeclsLoaded.size()) { Error("declaration ID out-of-range for AST file"); return 0; } - unsigned Index = ID - 1; + unsigned Index = ID - NUM_PREDEF_DECL_IDS; if (!DeclsLoaded[Index]) { ReadDeclRecord(ID); if (DeserializationListener) diff --git a/lib/Serialization/ASTWriter.cpp b/lib/Serialization/ASTWriter.cpp index c3bbecdb0e..fe152b1194 100644 --- a/lib/Serialization/ASTWriter.cpp +++ b/lib/Serialization/ASTWriter.cpp @@ -2039,7 +2039,7 @@ void ASTWriter::WriteTypeDeclOffsets() { Record.clear(); Record.push_back(DECL_OFFSET); Record.push_back(DeclOffsets.size()); - Record.push_back(FirstDeclID - 1); + Record.push_back(FirstDeclID - NUM_PREDEF_DECL_IDS); Stream.EmitRecordWithBlob(DeclOffsetAbbrev, Record, data(DeclOffsets)); } @@ -2740,7 +2740,7 @@ void ASTWriter::SetSelectorOffset(Selector Sel, uint32_t Offset) { ASTWriter::ASTWriter(llvm::BitstreamWriter &Stream) : Stream(Stream), Chain(0), SerializationListener(0), - FirstDeclID(1), NextDeclID(FirstDeclID), + FirstDeclID(NUM_PREDEF_DECL_IDS), NextDeclID(FirstDeclID), FirstTypeID(NUM_PREDEF_TYPE_IDS), NextTypeID(FirstTypeID), FirstIdentID(1), NextIdentID(FirstIdentID), FirstSelectorID(1), NextSelectorID(FirstSelectorID), FirstMacroID(1), NextMacroID(FirstMacroID), |