Move the "RelocatablePCH" bit from the ASTReader to the module file.
authorDouglas Gregor <dgregor@apple.com>
Thu, 18 Oct 2012 21:31:35 +0000 (21:31 +0000)
committerDouglas Gregor <dgregor@apple.com>
Thu, 18 Oct 2012 21:31:35 +0000 (21:31 +0000)
llvm-svn: 166229

clang/include/clang/Serialization/ASTReader.h
clang/include/clang/Serialization/Module.h
clang/lib/Serialization/ASTReader.cpp

index 0306187..f65de63 100644 (file)
@@ -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,
index a4c156e..30bed03 100644 (file)
@@ -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;
 
index deb5ade..1322be5 100644 (file)
@@ -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),