From: Chris Lattner Date: Tue, 23 Nov 2010 19:38:22 +0000 (+0000) Subject: r120013 dropped passing in the precomputed file size to X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f8f6129861f3972dab2c5a6cde29711ac780a7d0;p=clang r120013 dropped passing in the precomputed file size to MemoryBuffer::getFile, causing us to pick up a fstat for every file. Restore the optimization. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120032 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Basic/FileManager.cpp b/lib/Basic/FileManager.cpp index 9572aaadb7..b884388c0b 100644 --- a/lib/Basic/FileManager.cpp +++ b/lib/Basic/FileManager.cpp @@ -394,11 +394,12 @@ llvm::MemoryBuffer *FileManager:: getBufferForFile(const FileEntry *Entry, std::string *ErrorStr) { llvm::StringRef Filename = Entry->getName(); if (FileSystemOpts.WorkingDir.empty()) - return llvm::MemoryBuffer::getFile(Filename, ErrorStr); + return llvm::MemoryBuffer::getFile(Filename, ErrorStr, Entry->getSize()); llvm::sys::Path FilePath(Filename); FixupRelativePath(FilePath, FileSystemOpts); - return llvm::MemoryBuffer::getFile(FilePath.c_str(), ErrorStr); + return llvm::MemoryBuffer::getFile(FilePath.c_str(), ErrorStr, + Entry->getSize()); } llvm::MemoryBuffer *FileManager:: diff --git a/lib/Basic/FileSystemStatCache.cpp b/lib/Basic/FileSystemStatCache.cpp index 3e13740cab..738af41a9e 100644 --- a/lib/Basic/FileSystemStatCache.cpp +++ b/lib/Basic/FileSystemStatCache.cpp @@ -24,7 +24,6 @@ MemorizeStatCalls::getStat(const char *Path, struct stat &StatBuf) { if (Result == CacheMiss) Result = ::stat(Path, &StatBuf) ? CacheHitMissing : CacheHitExists; - // Do not cache failed stats, it is easy to construct common inconsistent // situations if we do, and they are not important for PCH performance (which // currently only needs the stats to construct the initial FileManager