From: Douglas Gregor Date: Thu, 17 Nov 2011 19:08:51 +0000 (+0000) Subject: If we're dealing with an overridden buffer in the AST reader, load the X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a4581a120cbcc373b02f13ef744591679f0c2d8c;p=clang If we're dealing with an overridden buffer in the AST reader, load the file as a virtual file with the stored modification time and size. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144916 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index b9120ed227..de90c7b929 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/lib/Serialization/ASTReader.cpp @@ -1091,8 +1091,10 @@ ASTReader::ASTReadResult ASTReader::ReadSLocEntryRecord(int ID) { std::string OrigFilename(BlobStart, BlobStart + BlobLen); std::string Filename = OrigFilename; MaybeAddSystemRootToFilename(Filename); - const FileEntry *File = FileMgr.getFile(Filename, /*OpenFile=*/false, - /*CacheFailure=*/!OverriddenBuffer); + const FileEntry *File = + 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) { std::string resolved = resolveFileRelativeToOriginalDir(Filename,