diff options
author | Douglas Gregor <dgregor@apple.com> | 2012-10-18 21:18:25 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2012-10-18 21:18:25 +0000 |
commit | 11407b89c9d7ce8bc31869b0a7aae06add49e3dc (patch) | |
tree | bbf1f96c37b2e3157dc316f07f69062fa8bfced6 /lib | |
parent | eafa9d4d0d8b97f006dbd19c1e51d14663c8c5c3 (diff) |
Move information about the "original file" from the ASTReader into the
module files.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166228 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Serialization/ASTReader.cpp | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index 489e0a6abd..deb5adeb91 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/lib/Serialization/ASTReader.cpp @@ -819,11 +819,14 @@ void ASTReader::Error(unsigned DiagID, /// \brief Tell the AST listener about the predefines buffers in the chain. bool ASTReader::CheckPredefinesBuffers() { - if (Listener) + if (Listener) { + // We only care about the primary module. + ModuleFile &M = ModuleMgr.getPrimaryModule(); return Listener->ReadPredefinesBuffer(PCHPredefinesBuffers, - ActualOriginalFileName, + M.ActualOriginalSourceFileName, SuggestedPredefines, FileMgr); + } return false; } @@ -1833,7 +1836,7 @@ ASTReader::ASTReadResult ASTReader::ReadControlBlock(ModuleFile &F, } case LANGUAGE_OPTIONS: - if (&F == *ModuleMgr.begin() && + if (Listener && &F == *ModuleMgr.begin() && ParseLanguageOptions(F, Record) && !DisableValidation) return IgnorePCH; break; @@ -1854,7 +1857,7 @@ ASTReader::ASTReadResult ASTReader::ReadControlBlock(ModuleFile &F, TargetOpts.Features.push_back(ReadString(Record, Idx)); } - if (Listener->ReadTargetOptions(F, TargetOpts)) + if (Listener->ReadTargetOptions(F, TargetOpts) && !DisableValidation) return IgnorePCH; } break; @@ -1863,11 +1866,10 @@ ASTReader::ASTReadResult ASTReader::ReadControlBlock(ModuleFile &F, case ORIGINAL_FILE: // Only record from the primary AST file. if (&F == *ModuleMgr.begin()) { - OriginalFileID = FileID::get(Record[0]); - - ActualOriginalFileName.assign(BlobStart, BlobLen); - OriginalFileName = ActualOriginalFileName; - MaybeAddSystemRootToFilename(OriginalFileName); + F.OriginalSourceFileID = FileID::get(Record[0]); + F.ActualOriginalSourceFileName.assign(BlobStart, BlobLen); + F.OriginalSourceFileName = F.ActualOriginalSourceFileName; + MaybeAddSystemRootToFilename(F.OriginalSourceFileName); } break; @@ -2980,17 +2982,19 @@ ASTReader::ASTReadResult ASTReader::ReadAST(const std::string &FileName, if (DeserializationListener) DeserializationListener->ReaderInitialized(this); - if (!OriginalFileID.isInvalid()) { - OriginalFileID = FileID::get(ModuleMgr.getPrimaryModule().SLocEntryBaseID - + OriginalFileID.getOpaqueValue() - 1); + ModuleFile &PrimaryModule = ModuleMgr.getPrimaryModule(); + if (!PrimaryModule.OriginalSourceFileID.isInvalid()) { + PrimaryModule.OriginalSourceFileID + = FileID::get(PrimaryModule.SLocEntryBaseID + + PrimaryModule.OriginalSourceFileID.getOpaqueValue() - 1); - // If this AST file is a precompiled preamble, then set the preamble file ID - // of the source manager to the file source file from which the preamble was - // built. + // If this AST file is a precompiled preamble, then set the + // preamble file ID of the source manager to the file source file + // from which the preamble was built. if (Type == MK_Preamble) { - SourceMgr.setPreambleFileID(OriginalFileID); + SourceMgr.setPreambleFileID(PrimaryModule.OriginalSourceFileID); } else if (Type == MK_MainFile) { - SourceMgr.setMainFileID(OriginalFileID); + SourceMgr.setMainFileID(PrimaryModule.OriginalSourceFileID); } } |