[cfe-commits] r166233 - in /cfe/trunk: include/clang/Serialization/ASTReader.h lib/Serialization/ASTReader.cpp

Douglas Gregor dgregor at apple.com
Thu Oct 18 14:47:16 PDT 2012


Author: dgregor
Date: Thu Oct 18 16:47:16 2012
New Revision: 166233

URL: http://llvm.org/viewvc/llvm-project?rev=166233&view=rev
Log:
Move OriginalDir from ASTReader to ModuleFile.

Modified:
    cfe/trunk/include/clang/Serialization/ASTReader.h
    cfe/trunk/lib/Serialization/ASTReader.cpp

Modified: cfe/trunk/include/clang/Serialization/ASTReader.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Serialization/ASTReader.h?rev=166233&r1=166232&r2=166233&view=diff
==============================================================================
--- cfe/trunk/include/clang/Serialization/ASTReader.h (original)
+++ cfe/trunk/include/clang/Serialization/ASTReader.h Thu Oct 18 16:47:16 2012
@@ -645,10 +645,6 @@
   SmallVector<serialization::SubmoduleID, 2> ImportedModules;
   //@}
 
-  /// \brief The directory that the PCH was originally created in. Used to
-  /// allow resolving headers even after headers+PCH was moved to a new path.
-  std::string OriginalDir;
-
   /// \brief The directory that the PCH we are reading is stored in.
   std::string CurrentDir;
 

Modified: cfe/trunk/lib/Serialization/ASTReader.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReader.cpp?rev=166233&r1=166232&r2=166233&view=diff
==============================================================================
--- cfe/trunk/lib/Serialization/ASTReader.cpp (original)
+++ cfe/trunk/lib/Serialization/ASTReader.cpp Thu Oct 18 16:47:16 2012
@@ -1130,10 +1130,10 @@
       OverriddenBuffer? FileMgr.getVirtualFile(Filename, (off_t)Record[4],
                                                (time_t)Record[5])
                       : FileMgr.getFile(Filename, /*OpenFile=*/false);
-    if (File == 0 && !OriginalDir.empty() && !CurrentDir.empty() &&
-        OriginalDir != CurrentDir) {
+    if (File == 0 && !F->OriginalDir.empty() && !CurrentDir.empty() &&
+        F->OriginalDir != CurrentDir) {
       std::string resolved = resolveFileRelativeToOriginalDir(Filename,
-                                                              OriginalDir,
+                                                              F->OriginalDir,
                                                               CurrentDir);
       if (!resolved.empty())
         File = FileMgr.getFile(resolved);
@@ -1708,13 +1708,14 @@
 }
 
 const FileEntry *ASTReader::getFileEntry(StringRef filenameStrRef) {
+  ModuleFile &M = ModuleMgr.getPrimaryModule();
   std::string Filename = filenameStrRef;
-  MaybeAddSystemRootToFilename(ModuleMgr.getPrimaryModule(), Filename);
+  MaybeAddSystemRootToFilename(M, Filename);
   const FileEntry *File = FileMgr.getFile(Filename);
-  if (File == 0 && !OriginalDir.empty() && !CurrentDir.empty() &&
-      OriginalDir != CurrentDir) {
+  if (File == 0 && !M.OriginalDir.empty() && !CurrentDir.empty() &&
+      M.OriginalDir != CurrentDir) {
     std::string resolved = resolveFileRelativeToOriginalDir(Filename,
-                                                            OriginalDir,
+                                                            M.OriginalDir,
                                                             CurrentDir);
     if (!resolved.empty())
       File = FileMgr.getFile(resolved);
@@ -1865,20 +1866,14 @@
     }
 
     case ORIGINAL_FILE:
-      // Only record from the primary AST file.
-      if (&F == *ModuleMgr.begin()) {
-        F.OriginalSourceFileID = FileID::get(Record[0]);
-        F.ActualOriginalSourceFileName.assign(BlobStart, BlobLen);
-        F.OriginalSourceFileName = F.ActualOriginalSourceFileName;
-        MaybeAddSystemRootToFilename(F, F.OriginalSourceFileName);
-      }
+      F.OriginalSourceFileID = FileID::get(Record[0]);
+      F.ActualOriginalSourceFileName.assign(BlobStart, BlobLen);
+      F.OriginalSourceFileName = F.ActualOriginalSourceFileName;
+      MaybeAddSystemRootToFilename(F, F.OriginalSourceFileName);
       break;
 
     case ORIGINAL_PCH_DIR:
-      // Only record from the primary AST file.
-      if (&F == *ModuleMgr.begin()) {
-        OriginalDir.assign(BlobStart, BlobLen);
-      }
+      F.OriginalDir.assign(BlobStart, BlobLen);
       break;
     }
   }





More information about the cfe-commits mailing list