diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-08-04 17:06:18 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-08-04 17:06:18 +0000 |
commit | 7338a922dd1164002922163200b18a2c24eb0209 (patch) | |
tree | 81200d5c39393d3d6113e90fc913be06239b1e82 | |
parent | 837593fec8389eea3143920d7f2180b079b609e8 (diff) |
In the AST reader and writer, slide the preprocessed entity IDs by +1
so that we use ID zero as a sentinel for "no result". This matches the
convention set by all of the other global IDs.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136885 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Serialization/ASTReader.cpp | 12 | ||||
-rw-r--r-- | lib/Serialization/ASTWriter.cpp | 10 |
2 files changed, 12 insertions, 10 deletions
diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index 1149d968fd..e651c3804f 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/lib/Serialization/ASTReader.cpp @@ -1568,7 +1568,7 @@ PreprocessedEntity *ASTReader::LoadPreprocessedEntity(Module &F) { switch (RecType) { case PPD_MACRO_EXPANSION: { PreprocessedEntityID GlobalID = getGlobalPreprocessedEntityID(F, Record[0]); - if (PreprocessedEntity *PE = PPRec.getLoadedPreprocessedEntity(GlobalID)) + if (PreprocessedEntity *PE = PPRec.getLoadedPreprocessedEntity(GlobalID-1)) return PE; MacroExpansion *ME = @@ -1576,13 +1576,13 @@ PreprocessedEntity *ASTReader::LoadPreprocessedEntity(Module &F) { SourceRange(ReadSourceLocation(F, Record[1]), ReadSourceLocation(F, Record[2])), getLocalMacroDefinition(F, Record[4])); - PPRec.setLoadedPreallocatedEntity(GlobalID, ME); + PPRec.setLoadedPreallocatedEntity(GlobalID - 1, ME); return ME; } case PPD_MACRO_DEFINITION: { PreprocessedEntityID GlobalID = getGlobalPreprocessedEntityID(F, Record[0]); - if (PreprocessedEntity *PE = PPRec.getLoadedPreprocessedEntity(GlobalID)) + if (PreprocessedEntity *PE = PPRec.getLoadedPreprocessedEntity(GlobalID-1)) return PE; unsigned MacroDefID = getGlobalMacroDefinitionID(F, Record[1]); @@ -1602,7 +1602,7 @@ PreprocessedEntity *ASTReader::LoadPreprocessedEntity(Module &F) { ReadSourceLocation(F, Record[2]), ReadSourceLocation(F, Record[3]))); - PPRec.setLoadedPreallocatedEntity(GlobalID, MD); + PPRec.setLoadedPreallocatedEntity(GlobalID - 1, MD); MacroDefinitionsLoaded[MacroDefID - 1] = MD; if (DeserializationListener) @@ -1614,7 +1614,7 @@ PreprocessedEntity *ASTReader::LoadPreprocessedEntity(Module &F) { case PPD_INCLUSION_DIRECTIVE: { PreprocessedEntityID GlobalID = getGlobalPreprocessedEntityID(F, Record[0]); - if (PreprocessedEntity *PE = PPRec.getLoadedPreprocessedEntity(GlobalID)) + if (PreprocessedEntity *PE = PPRec.getLoadedPreprocessedEntity(GlobalID-1)) return PE; const char *FullFileNameStart = BlobStart + Record[3]; @@ -1632,7 +1632,7 @@ PreprocessedEntity *ASTReader::LoadPreprocessedEntity(Module &F) { File, SourceRange(ReadSourceLocation(F, Record[1]), ReadSourceLocation(F, Record[2]))); - PPRec.setLoadedPreallocatedEntity(GlobalID, ID); + PPRec.setLoadedPreallocatedEntity(GlobalID - 1, ID); return ID; } } diff --git a/lib/Serialization/ASTWriter.cpp b/lib/Serialization/ASTWriter.cpp index caf5836efc..8d2fb9b2b7 100644 --- a/lib/Serialization/ASTWriter.cpp +++ b/lib/Serialization/ASTWriter.cpp @@ -1797,11 +1797,13 @@ void ASTWriter::WritePreprocessorDetail(PreprocessingRecord &PPRec) { } unsigned IndexBase = Chain ? PPRec.getNumLoadedPreprocessedEntities() : 0; + unsigned NextPreprocessorEntityID = IndexBase + 1; RecordData Record; uint64_t BitsInChain = Chain? Chain->TotalModulesSizeInBits : 0; for (PreprocessingRecord::iterator E = PPRec.begin(Chain), EEnd = PPRec.end(Chain); - E != EEnd; ++E) { + E != EEnd; + (void)++E, ++NumPreprocessingRecords, ++NextPreprocessorEntityID) { Record.clear(); if (MacroDefinition *MD = dyn_cast<MacroDefinition>(*E)) { @@ -1826,7 +1828,7 @@ void ASTWriter::WritePreprocessorDetail(PreprocessingRecord &PPRec) { } else MacroDefinitionOffsets.push_back(Stream.GetCurrentBitNo()); - Record.push_back(IndexBase + NumPreprocessingRecords++); + Record.push_back(NextPreprocessorEntityID); Record.push_back(ID); AddSourceLocation(MD->getSourceRange().getBegin(), Record); AddSourceLocation(MD->getSourceRange().getEnd(), Record); @@ -1842,7 +1844,7 @@ void ASTWriter::WritePreprocessorDetail(PreprocessingRecord &PPRec) { BitsInChain + Stream.GetCurrentBitNo()); if (MacroExpansion *ME = dyn_cast<MacroExpansion>(*E)) { - Record.push_back(IndexBase + NumPreprocessingRecords++); + Record.push_back(NextPreprocessorEntityID); AddSourceLocation(ME->getSourceRange().getBegin(), Record); AddSourceLocation(ME->getSourceRange().getEnd(), Record); AddIdentifierRef(ME->getName(), Record); @@ -1853,7 +1855,7 @@ void ASTWriter::WritePreprocessorDetail(PreprocessingRecord &PPRec) { if (InclusionDirective *ID = dyn_cast<InclusionDirective>(*E)) { Record.push_back(PPD_INCLUSION_DIRECTIVE); - Record.push_back(IndexBase + NumPreprocessingRecords++); + Record.push_back(NextPreprocessorEntityID); AddSourceLocation(ID->getSourceRange().getBegin(), Record); AddSourceLocation(ID->getSourceRange().getEnd(), Record); Record.push_back(ID->getFileName().size()); |