aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2012-10-18 21:31:35 +0000
committerDouglas Gregor <dgregor@apple.com>2012-10-18 21:31:35 +0000
commitcaed060d38f404c3a7650dbd236c25ec356bc5a3 (patch)
tree130441295ed117cd7f383da608de89c39c3c7302
parent11407b89c9d7ce8bc31869b0a7aae06add49e3dc (diff)
Move the "RelocatablePCH" bit from the ASTReader to the module file.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166229 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/Serialization/ASTReader.h5
-rw-r--r--include/clang/Serialization/Module.h3
-rw-r--r--lib/Serialization/ASTReader.cpp18
3 files changed, 13 insertions, 13 deletions
diff --git a/include/clang/Serialization/ASTReader.h b/include/clang/Serialization/ASTReader.h
index 0306187f95..f65de63fd3 100644
--- a/include/clang/Serialization/ASTReader.h
+++ b/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/include/clang/Serialization/Module.h b/include/clang/Serialization/Module.h
index a4c156e293..30bed03b8a 100644
--- a/include/clang/Serialization/Module.h
+++ b/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/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp
index deb5adeb91..1322be5a23 100644
--- a/lib/Serialization/ASTReader.cpp
+++ b/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),