summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization/ASTReader.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-11-17 19:08:51 +0000
committerDouglas Gregor <dgregor@apple.com>2011-11-17 19:08:51 +0000
commitbe51458dc33c8fefc768c272069440e0c95db4e7 (patch)
treeae0a2ff7f44a73bb6917a58e55133490d61cd09c /clang/lib/Serialization/ASTReader.cpp
parent14c62c8d02d425d9874fbe80cc9e5ee27f294ba1 (diff)
downloadbcm5719-llvm-be51458dc33c8fefc768c272069440e0c95db4e7.tar.gz
bcm5719-llvm-be51458dc33c8fefc768c272069440e0c95db4e7.zip
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. llvm-svn: 144916
Diffstat (limited to 'clang/lib/Serialization/ASTReader.cpp')
-rw-r--r--clang/lib/Serialization/ASTReader.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index b9120ed227c..de90c7b929f 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/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,
OpenPOWER on IntegriCloud