From 6bdae4b7c1ed71dbe34bbeef820e05d9e0c4f23e Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Thu, 18 Oct 2012 21:31:35 +0000 Subject: [PATCH] Move the "RelocatablePCH" bit from the ASTReader to the module file. llvm-svn: 166229 --- clang/include/clang/Serialization/ASTReader.h | 5 +---- clang/include/clang/Serialization/Module.h | 3 +++ clang/lib/Serialization/ASTReader.cpp | 18 +++++++++--------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/clang/include/clang/Serialization/ASTReader.h b/clang/include/clang/Serialization/ASTReader.h index 0306187..f65de63 100644 --- a/clang/include/clang/Serialization/ASTReader.h +++ b/clang/include/clang/Serialization/ASTReader.h @@ -652,9 +652,6 @@ private: /// \brief The directory that the PCH we are reading is stored in. std::string CurrentDir; - /// \brief Whether this precompiled header is a relocatable PCH file. - bool RelocatablePCH; - /// \brief The system include root to be used when loading the /// precompiled header. std::string isysroot; @@ -871,7 +868,7 @@ private: /// into account all the necessary relocations. const FileEntry *getFileEntry(StringRef filename); - void MaybeAddSystemRootToFilename(std::string &Filename); + void MaybeAddSystemRootToFilename(ModuleFile &M, std::string &Filename); ASTReadResult ReadASTCore(StringRef FileName, ModuleKind Type, ModuleFile *ImportedBy, diff --git a/clang/include/clang/Serialization/Module.h b/clang/include/clang/Serialization/Module.h index a4c156e..30bed03 100644 --- a/clang/include/clang/Serialization/Module.h +++ b/clang/include/clang/Serialization/Module.h @@ -92,6 +92,9 @@ public: /// allow resolving headers even after headers+PCH was moved to a new path. std::string OriginalDir; + /// \brief Whether this precompiled header is a relocatable PCH file. + bool RelocatablePCH; + /// \brief The file entry for the module file. const FileEntry *File; diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index deb5ade..1322be5 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -848,7 +848,7 @@ bool ASTReader::ParseLineTable(ModuleFile &F, unsigned FilenameLen = Record[Idx++]; std::string Filename(&Record[Idx], &Record[Idx] + FilenameLen); Idx += FilenameLen; - MaybeAddSystemRootToFilename(Filename); + MaybeAddSystemRootToFilename(F, Filename); FileIDs[I] = LineTable.getLineTableFilenameID(Filename); } @@ -1125,7 +1125,7 @@ ASTReader::ASTReadResult ASTReader::ReadSLocEntryRecord(int ID) { std::string OrigFilename(BlobStart, BlobStart + BlobLen); std::string Filename = OrigFilename; - MaybeAddSystemRootToFilename(Filename); + MaybeAddSystemRootToFilename(*F, Filename); const FileEntry *File = OverriddenBuffer? FileMgr.getVirtualFile(Filename, (off_t)Record[4], (time_t)Record[5]) @@ -1709,7 +1709,7 @@ void ASTReader::markIdentifierUpToDate(IdentifierInfo *II) { const FileEntry *ASTReader::getFileEntry(StringRef filenameStrRef) { std::string Filename = filenameStrRef; - MaybeAddSystemRootToFilename(Filename); + MaybeAddSystemRootToFilename(ModuleMgr.getPrimaryModule(), Filename); const FileEntry *File = FileMgr.getFile(Filename); if (File == 0 && !OriginalDir.empty() && !CurrentDir.empty() && OriginalDir != CurrentDir) { @@ -1726,9 +1726,10 @@ const FileEntry *ASTReader::getFileEntry(StringRef filenameStrRef) { /// \brief If we are loading a relocatable PCH file, and the filename is /// not an absolute path, add the system root to the beginning of the file /// name. -void ASTReader::MaybeAddSystemRootToFilename(std::string &Filename) { +void ASTReader::MaybeAddSystemRootToFilename(ModuleFile &M, + std::string &Filename) { // If this is not a relocatable PCH file, there's nothing to do. - if (!RelocatablePCH) + if (!M.RelocatablePCH) return; if (Filename.empty() || llvm::sys::path::is_absolute(Filename)) @@ -1802,7 +1803,7 @@ ASTReader::ASTReadResult ASTReader::ReadControlBlock(ModuleFile &F, return IgnorePCH; } - RelocatablePCH = Record[4]; + F.RelocatablePCH = Record[4]; const std::string &CurBranch = getClangFullRepositoryVersion(); StringRef ASTBranch(BlobStart, BlobLen); @@ -1869,7 +1870,7 @@ ASTReader::ASTReadResult ASTReader::ReadControlBlock(ModuleFile &F, F.OriginalSourceFileID = FileID::get(Record[0]); F.ActualOriginalSourceFileName.assign(BlobStart, BlobLen); F.OriginalSourceFileName = F.ActualOriginalSourceFileName; - MaybeAddSystemRootToFilename(F.OriginalSourceFileName); + MaybeAddSystemRootToFilename(F, F.OriginalSourceFileName); } break; @@ -6844,8 +6845,7 @@ ASTReader::ASTReader(Preprocessor &PP, ASTContext &Context, SourceMgr(PP.getSourceManager()), FileMgr(PP.getFileManager()), Diags(PP.getDiagnostics()), SemaObj(0), PP(PP), Context(Context), Consumer(0), ModuleMgr(PP.getFileManager()), - RelocatablePCH(false), isysroot(isysroot), - DisableValidation(DisableValidation), + isysroot(isysroot), DisableValidation(DisableValidation), DisableStatCache(DisableStatCache), AllowASTWithCompilerErrors(AllowASTWithCompilerErrors), CurrentGeneration(0), CurrSwitchCaseStmts(&SwitchCaseStmts), -- 2.7.4