History log of /external/clang/include/clang/Basic/FileManager.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
ef8225444452a1486bd721f3285301fe84643b00 21-Jul-2014 Stephen Hines <srhines@google.com> Update Clang for rebase to r212749.

This also fixes a small issue with arm_neon.h not being generated always.

Includes a cherry-pick of:
r213450 - fixes mac-specific header issue
r213126 - removes a default -Bsymbolic on Android

Change-Id: I2a790a0f5d3b2aab11de596fc3a74e7cbc99081d
/external/clang/include/clang/Basic/FileManager.h
6bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89 29-May-2014 Stephen Hines <srhines@google.com> Update Clang for 3.5 rebase (r209713).

Change-Id: I8c9133b0f8f776dc915f270b60f94962e771bc83
/external/clang/include/clang/Basic/FileManager.h
651f13cea278ec967336033dd032faef0e9fc2ec 24-Apr-2014 Stephen Hines <srhines@google.com> Updated to Clang 3.5a.

Change-Id: I8127eb568f674c2e72635b639a3295381fe8af82
/external/clang/include/clang/Basic/FileManager.h
0fda0f75f053ad9afdb2bb8d4ea72c5e6a49d657 01-Aug-2013 Rafael Espindola <rafael.espindola@gmail.com> Use llvm::sys::fs::UniqueID for windows and unix.

This unifies the unix and windows versions of FileManager::UniqueDirContainer
and FileManager::UniqueFileContainer by using UniqueID.

We cannot just replace "struct stat" with llvm::sys::fs::file_status, since we
want to be able to construct fake ones, and file_status has different members
on unix and windows.

What the patch does is:

* Record only the information that clang is actually using.
* Use llvm::sys::fs::status instead of stat and fstat.
* Use llvm::sys::fs::UniqueID
* Delete the old windows versions of UniqueDirContainer and
UniqueFileContainer since the "unix" one now works on windows too.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187619 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
aefb1d3312a63ac8d289a2e84747fe61a7f61823 29-Jul-2013 Rafael Espindola <rafael.espindola@gmail.com> Convert a use of stat with sys::fs::status.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187364 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
92306906ba0a57084942ef93e941dff4d2d9320e 26-Jun-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove forward declarations of sys::Path.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184911 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
713b7c011869f177dc76e6df4f7f44b1bd073bb0 26-Jan-2013 Douglas Gregor <dgregor@apple.com> Since we're stuck with realpath for the header <-> module mapping,
factor the realpath calls into FileManager::getCanonicalName() so we
can cache the results of this epically slow operation. 5% speedup on
my modules test, and realpath drops out of the profile.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173542 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
e5d30e3b403539b10aaa52f03875a2243bf88904 11-Dec-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Extend stat query APIs to explicitly specify if the query is for
a file or directory, allowing just a stat call if a file descriptor
is not needed.

Doing just 'stat' is faster than 'open/fstat/close'.
This has the effect of cutting down system time for validating the input files of a PCH.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169831 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
30a2e16f6c27f888dd11eba6bbbae1e980078fcb 04-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Sort #include lines for all files under include/...

This is a simpler sort, entirely automatic with the help of
llvm/utils/sort_includes.py -- no manual edits here.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169238 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
ce36ecd5a509af8fc5924d21694df36e8bc94a95 05-Nov-2012 Daniel Dunbar <daniel@zuster.org> Frontend: Add support for reading named pipes as the main file.

- The whole {File,Source}Manager is built around wanting to pre-determine the
size of files, so we can't fit this in naturally. Instead, we handle it like
we do STDIN, where we just replace the main file contents upfront.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167419 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
98be86038b1e891a05583061c55dfa974150eb2c 31-Jul-2012 Manuel Klimek <klimek@google.com> Fixes a segfault in Tooling when using pch's:
Clear the FileManager's stat cache in between running
translation units, as the stat cache loaded from a pch
is only valid for one compiler invocation.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161047 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
ff398965a5abfaf5bc47bc022876f56a28e5b9a7 11-Jul-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> Introduce a flag in SourceManager to treat non-system source files
as "volatile", meaning there's a high enough chance that they may
change while we are trying to use them.

This flag is only enabled by libclang.
Currently "volatile" source files will be stat'ed immediately
before opening them, because the file size stat info
may not be accurate since when we got it (e.g. from the PCH).
This avoids crashes when trying to reference mmap'ed memory
from a file whose size is not what we expect.

Note that there's still a window for a racing issue to occur
but the window for it should be way smaller than before.
We can consider later on to avoid mmap completely on such files.

rdar://11612916

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160074 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
5ba0559f2f0ddd62de16547af514dbaf93b79585 10-Jul-2012 Axel Naumann <Axel.Naumann@cern.ch> Improve r159256 following Chandler's comments:
Implement UniqueFileContainer::erase(), camelCase, add comment on future optimizations of the cache versus de-optimizations of invalidations.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159997 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
af50aab0c317462129d73ae8000c6394c718598d 03-Jul-2012 James Dennett <jdennett@google.com> Documentation cleanup:
* Primarily, added \brief to most of include/clang/Basic, instead of prefixing
the comments with "DeclaredName - ";
* Made some brief summaries significantly briefer;
* Fixed up some erroneous uses of \see and \arg;
* Fixed up some extraneous backslashes in \code...\endcode blocks;
* Fixed up some typos/spelling errors.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159616 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
2f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622 02-Jul-2012 James Dennett <jdennett@google.com> Documentation cleanup: reformatting/fixing up file comments so that they have
\file and \brief markup and appear in Doxygen's summaries (and eventually at
http://clang.llvm.org/doxygen/files.html). Fixed up another couple of minor
glitches in the docs at the same time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159517 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
3ce42c37b0ef6b10538f5040a33d19a6e6988d05 27-Jun-2012 Axel Naumann <Axel.Naumann@cern.ch> From Vassil Vassilev:
add interface for removing a FileEntry from the cache.
Forces a re-read the contents from disk, e.g. because a tool (like cling) wants to pick up a modified file.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159256 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
40cc104d392635f5f594d495c2f878a7d4c003f9 15-Jun-2012 James Dennett <jdennett@google.com> Documentation cleanup: fixed/created some /brief function summaries.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158555 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
d54dff026b02303a35147224de72bb44cbb53c79 03-May-2012 Argyrios Kyrtzidis <akyrtzi@gmail.com> [PCH] When validating that the files coming from PCH did not change, also
validate that we didn't override the contents of any of such files.

If this is detected, emit a diagnostic error and recover gracefully
by using the contents of the original file that the PCH was built from.

Part of rdar://11305263

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156107 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
c93dc7889644293e318e19d82830ea2acc45b678 20-Feb-2012 Dylan Noblesmith <nobled@dreamwidth.org> Basic: import IntrusiveRefCntPtr<> into clang namespace

The class name is long enough without the llvm:: added.
Also bring in RefCountedBase and RefCountedBaseVPTR.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150958 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
6f42b62b6194f53bcbc349f5d17388e1936535d7 05-Feb-2012 Dylan Noblesmith <nobled@dreamwidth.org> Basic: import OwningPtr<> into clang namespace

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149798 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
70042f5d1ca378138f90b7b9384023701f5d03d8 20-Oct-2011 David Blaikie <dblaikie@gmail.com> Fix all 80 col violations in include/clang/Basic, plus any trailing whitespace in the files I'm touching anyway.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142564 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
6e975c4517958bcc11c834336d340797356058db 14-Sep-2011 Douglas Gregor <dgregor@apple.com> For modules, use a hash of the compiler version, language options, and
target triple to separate modules built under different
conditions. The hash is used to create a subdirectory in the module
cache path where other invocations of the compiler (with the same
version, language options, etc.) can find the precompiled modules.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139662 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
21cae2059a06f7d89eee169409c9266def1b1aca 13-Sep-2011 Douglas Gregor <dgregor@apple.com> When an import statement fails to find a module in the module cache,
but there is a corresponding umbrella header in a framework, build the
module on-the-fly so it can be immediately loaded at the import
statement. This is very much proof-of-concept code, with details to be
fleshed out over time.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139558 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
1afb661bc5444462a246cefa0effa61ef25fab29 28-Jul-2011 Jonathan D. Turner <jonathan.d.turner@gmail.com> Switch the ModuleManager over to using a FileManager and FileEntry* as part of its lookup instead of the filename. This is a more correct unique identifier, as symlinks can be handled by the FileManager.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136363 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
686775deca8b8685eb90801495880e3abdd844c2 20-Jul-2011 Chris Lattner <sabre@nondot.org> now that we have a centralized place to do so, add some using declarations for
some common llvm types: stringref and smallvector. This cleans up the codebase
quite a bit.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135576 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
1626601b00a1feccd6b7a3f54e2991f56b659192 23-Jun-2011 Dylan Noblesmith <nobled@dreamwidth.org> avoid using config.h in public headers

This is the only usage in clang's headers, and it's for a define
that only exists on CMake builds for the sake of the MSVC compiler,
so just use an ifdef instead.

Also add an include for config.h in a file that actually needs it,
and was picking it up by accident indirectly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133710 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
4f32786ac45210143654390177105eb749b614e9 21-Mar-2011 Ted Kremenek <kremenek@apple.com> Improve crash recovery cleanup to recovery CompilerInstances during crash recovery. This was a huge resource "root" during crashes.

This change requires making a bunch of fundamental Clang structures (optionally) reference counted to allow correct
ownership semantics of these objects (e.g., ASTContext) to play out between an active ASTUnit and CompilerInstance
object.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128011 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
7dbafb3ade491a41100c97597209455ee10c537d 18-Mar-2011 Anders Carlsson <andersca@mac.com> Add FileManager::getNoncachedStatValue, which will resolve relative paths against the working directory specified in the file system options.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127893 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
3cd0128ce49abe658d1858c541e836e57959e04a 16-Mar-2011 Argyrios Kyrtzidis <akyrtzi@gmail.com> Having FileManager::getFile always open the file, brought much consternation and leaking of file descriptors.

Add 'openFile' bool to FileManager::getFile to specify whether we want to have the file opened or not, have it
false by default, and enable it only in HeaderSearch.cpp where the open+fstat optimization matters.

Fixes rdar://9139899.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127748 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
2e2468e2d2ccbb9a38fe3b6b754009af7e5d39a9 14-Mar-2011 Anders Carlsson <andersca@mac.com> Get rid of the static FileManager::FixupRelativePath.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127573 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
d47aad92ccfb6c2cf5921f8fefddd7e541dc9bb3 07-Mar-2011 Anders Carlsson <andersca@mac.com> Add a non-static FixupRelativePath to FileManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127143 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
af036a6c25f540a9daf51e721485ae6d0e645bd8 06-Mar-2011 Anders Carlsson <andersca@mac.com> Convert FileManager::FixupRelativePath over to using PathV2.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127133 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
9b555ea217565ac0f8bf7255b29496916cb03476 11-Feb-2011 Zhanyong Wan <wan@google.com> Improves Clang's virtual file handling.

This patch contains:

- making some of the existing comments more accurate in the presence
of virtual files/directories.

- renaming some private data members of FileManager to match their roles better.

- creating 'DirectorEntry's for the parent directories of virtual
files, such that we can tell whether two virtual files are from the
same directory. This is useful for injecting virtual files whose
directories don't exist in the real file system.

- minor clean-ups and adding comments for class
FileManager::UniqueDirContainer and FileManager::UniqueFileContainer.

- adding statistics on virtual files to FileManager::PrintStats().

- adding unit tests to verify the existing and new behavior of FileManager.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125384 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
cfbf1c7536e016dc275139dd842d4a5f059a749f 10-Feb-2011 Douglas Gregor <dgregor@apple.com> Implement two related optimizations that make de-serialization of
AST/PCH files more lazy:
- Don't preload all of the file source-location entries when reading
the AST file. Instead, load them lazily, when needed.
- Only look up header-search information (whether a header was already
#import'd, how many times it's been included, etc.) when it's needed
by the preprocessor, rather than pre-populating it.

Previously, we would pre-load all of the file source-location entries,
which also populated the header-search information structure. This was
a relatively minor performance issue, since we would end up stat()'ing
all of the headers stored within a AST/PCH file when the AST/PCH file
was loaded. In the normal PCH use case, the stat()s were cached, so
the cost--of preloading ~860 source-location entries in the Cocoa.h
case---was relatively low.

However, the recent optimization that replaced stat+open with
open+fstat turned this into a major problem, since the preloading of
source-location entries would now end up opening those files. Worse,
those files wouldn't be closed until the file manager was destroyed,
so just opening a Cocoa.h PCH file would hold on to ~860 file
descriptors, and it was easy to blow through the process's limit on
the number of open file descriptors.

By eliminating the preloading of these files, we neither open nor stat
the headers stored in the PCH/AST file until they're actually needed
for something. Concretely, we went from

*** HeaderSearch Stats:
835 files tracked.
364 #import/#pragma once files.
823 included exactly once.
6 max times a file is included.
3 #include/#include_next/#import.
0 #includes skipped due to the multi-include optimization.
1 framework lookups.
0 subframework lookups.

*** Source Manager Stats:
835 files mapped, 3 mem buffers mapped.
37460 SLocEntry's allocated, 11215575B of Sloc address space used.
62 bytes of files mapped, 0 files with line #'s computed.

with a trivial program that uses a chained PCH including a Cocoa PCH
to

*** HeaderSearch Stats:
4 files tracked.
1 #import/#pragma once files.
3 included exactly once.
2 max times a file is included.
3 #include/#include_next/#import.
0 #includes skipped due to the multi-include optimization.
1 framework lookups.
0 subframework lookups.

*** Source Manager Stats:
3 files mapped, 3 mem buffers mapped.
37460 SLocEntry's allocated, 11215575B of Sloc address space used.
62 bytes of files mapped, 0 files with line #'s computed.

for the same program.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125286 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
e4fed47acee9e7ca9c9cfa77c3920eec4639d7d0 28-Nov-2010 Chris Lattner <sabre@nondot.org> tighten up operator= to ensure we don't get multiple owners with the same FD.
wouldn't move ctors be nice? :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120255 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
0d4739abf60372abdbafabd8ed59acc5d01729b5 24-Nov-2010 Francois Pichet <pichet2000@gmail.com> Fix 2 problems with Chris Lattner's FileManager redesign on Windows.

- FileEntry::operator= is needed on Win32.
- There was an error in the S_ISDIR() macro.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120079 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
5cc1c738b0c51af55cbfe7672c284c19f8e30eb2 23-Nov-2010 Chris Lattner <sabre@nondot.org> The final result of all this refactoring: instead of doing stat immediately
followed by an open for every source file we open, probe the file system with
'open' and then do an fstat when it succeeds. open+fstat is faster than
stat+open because the kernel only has to perform the string->inode mapping
once. Presumably it gets faster the deeper in your filesystem a lookup
happens.

For -Eonly on cocoa.h, this reduces system time from 0.042s to 0.039s on
my machine, a 7.7% speedup.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120066 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
898a061f69e1145bf89a987c08203132b9922a3c 23-Nov-2010 Chris Lattner <sabre@nondot.org> change the 'is directory' indicator to be a null-or-not
pointer that is passed down through the APIs, and make
FileSystemStatCache::get be the one that filters out
directory lookups that hit files. This also paves the
way to have stat queries be able to return opened files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120060 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
f9f7766846a205bc900b578f944567e679b221aa 23-Nov-2010 Chris Lattner <sabre@nondot.org> pull "is directory" handling into FileManager::getStatValue
which simplifies clients and is important for future directions.
Add a FD member to FileEntry which isn't used but will be shortly.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120056 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
10e286aa8d39fb51a21412850265d9dae74613ee 23-Nov-2010 Chris Lattner <sabre@nondot.org> rework the stat cache, pulling it out of FileManager.h into
its own header and giving it some more structure. No
functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120030 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
75dfb65c38d51772df9a00ce2d2feeefd55667ad 23-Nov-2010 Chris Lattner <sabre@nondot.org> tidy up. Split FileManager::getBufferForFile into
two copies, since they are fundamentally different
operations and the StringRef one should go away
(it shouldn't be part of FileManager at least).

Remove some dead arguments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120013 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
39b49bcaaddb1049234fca9500c0ac02c088e23d 23-Nov-2010 Chris Lattner <sabre@nondot.org> now the FileManager has a FileSystemOpts ivar, stop threading
FileSystemOpts through a ton of apis, simplifying a lot of code.
This also fixes a latent bug in ASTUnit where it would invoke
methods on FileManager without creating one in some code paths
in cindextext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120010 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
7ad97ffa631af6ad678c79b38341ac995f347ce9 23-Nov-2010 Chris Lattner <sabre@nondot.org> give FileManager a 'FileSystemOptions' ivar, which will be used
to simplify a bunch of code in it. It should ultimately get inlined
into FileManager.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120007 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
151466a18671df9cfd9abd59ba53df35b1d687da 23-Nov-2010 Chris Lattner <sabre@nondot.org> Partially revert Doug's PCH validation patch (r98585).

This patch completely defeated the "passing in a prestat'd size
to MemoryBuffer" optimization, leading to an extra fstat call for
every buffer opened, in order to find out if the datestamp and size
of the file on disk matches what is in the stat cache.

I fully admit that I don't completely understand what is going on here:
why punish code when a stat cache isn't in use? what is the point of a
stat cache if you have to turn around and stat stuff to validate it?

To resolve both these issues, just drop the modtime check and check the
file size, which is the important thing anyway. This should also resolve
PR6812, because presumably windows is stable when it comes to file sizes.
If the modtime is actually important, we should get it and keep it on the
first stat.

This eliminates 833 fstat syscalls when processing Cocoa.h, speeding up
system time on -Eonly Cocoa.h from 0.041 to 0.038s.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120001 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
67452f51aec1ad8a3e4c6622c0c57c5d8dc1b6a3 23-Nov-2010 Chris Lattner <sabre@nondot.org> stringref'ize API


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119997 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
6538227d51df249b07c8ab80ae376f5c1d14403c 21-Nov-2010 Chris Lattner <sabre@nondot.org> remove old compatibility APIs, use StringRef versions instead.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119935 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
f69a1f319bd3c846c4a9ab84ea615e4e37dfd359 21-Nov-2010 Chris Lattner <sabre@nondot.org> change the various getFile routines to use StringRef as their implementation form.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119934 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
389db16c63eec6ecfa9b235155252d8da766e94e 03-Nov-2010 Argyrios Kyrtzidis <akyrtzi@gmail.com> Implement -working-directory.

When -working-directory is passed in command line, file paths are resolved relative to the specified directory.
This helps both when using libclang (where we can't require the user to actually change the working directory)
and to help reproduce test cases when the reproduction work comes along.

--FileSystemOptions is introduced which controls how file system operations are performed (currently it just contains
the working directory value if set).
--FileSystemOptions are passed around to various interfaces that perform file operations.
--Opening & reading the content of files should be done only through FileManager. This is useful in general since
file operations will be abstracted in the future for the reproduction mechanism.

FileSystemOptions is independent of FileManager so that we can have multiple translation units sharing the same
FileManager but with different FileSystemOptions.

Addresses rdar://8583824.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118203 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
ec1b1cc006cef19e0a95d0ea6fbfd37d0d615066 15-Jul-2010 Benjamin Kramer <benny.kra@googlemail.com> Pass StringRefs by value.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108375 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
057e567f1b375190779e5341f42861896cdee442 02-Dec-2009 Douglas Gregor <dgregor@apple.com> Extend -remap-file=from;to to permit mapping from a non-existent
file. This is accomplished by introducing the notion of a "virtual"
file into the file manager, which provides a FileEntry* for a named
file whose size and modification time are known but which may not
exist on disk.

Added a cute little test that remaps both a .c file and a .h file it
includes to alternative files.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90329 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
52e7108f51a4a9f4d6e84f33fb594d06e1d79560 16-Oct-2009 Douglas Gregor <dgregor@apple.com> Add support for a chain of stat caches in the FileManager, rather than
only supporting a single stat cache. The immediate benefit of this
change is that we can now generate a PCH/AST file when including
another PCH file; in the future, the chain of stat caches will likely
be useful with multiple levels of PCH files.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84263 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
1eb4433ac451dc16f4133a88af2d002ac26c58ef 09-Sep-2009 Mike Stump <mrs@apple.com> Remove tabs, and whitespace cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81346 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
458fb10ef5ba2d7b375c6c64095c1458af0a5be3 05-Sep-2009 Benjamin Kramer <benny.kra@googlemail.com> Replace some instances of std::string with StringRefs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81079 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
4fed3f47f6b9e31d603c5c2d1f6d8ec2e1241e57 27-Apr-2009 Douglas Gregor <dgregor@apple.com> Implement caching of stat() calls for precompiled headers, which is
essentially the same thing we do with pretokenized headers. stat()
caching improves performance of the Cocoa-prefixed "Hello, World" by
45%.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70223 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
370187c8a3e96517c943329f2511737a04b85450 22-Apr-2009 Douglas Gregor <dgregor@apple.com> Remove the serialization code that predates precompiled
headers. Future approaches to (de-)serializing ASTs will be based on
the PCH infrastructure.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69828 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
52ba870eba17e634339622dbf103434ca31935eb 28-Mar-2009 Chris Lattner <sabre@nondot.org> move StatListener out to top level.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67886 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
ea684e699ea84e61711e279f5fa7a1b9f3d46bc2 14-Feb-2009 Cedric Venet <cedric.venet@laposte.net> Fix the build on win32.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64556 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
96438f319bb07d9a40564b5e01333f82c0c8a61e 12-Feb-2009 Ted Kremenek <kremenek@apple.com> FileManager:
- set the 'StatSysCallCache' object using a setter method instead of
FileManager's constructor. This allows the cache to be installed after the
FileManager object is created.
- Add 'file mode' to FileEntry (useful for stat caching)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64351 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
fc7052d4a241ee6fc70afea7c1c9560147f0a49c 12-Feb-2009 Ted Kremenek <kremenek@apple.com> Add lightweight shim "clang::StatSysCallCache" that caches 'stat' system calls
for use by FileManager. FileManager now takes a StatSysCallCache* in its
constructor (which defaults to NULL). This will be used for evaluating whether
or not caching 'stat' system calls in PTH is a performance win. This shim adds
no observable performance impact in the case where the 'StatSysCallCache*' is
null.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64345 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
f3eb9219cf4b4e80c377d37aed72d5d6d840b7bc 28-Jan-2009 Ted Kremenek <kremenek@apple.com> FileManager: Use a BumpPtrAllocator for the StringMaps DirEntries and FileEntries.

Performance impact (clang -fsyntax-only INPUTS/Cocoa_h.m):
non-PTH: 0.4% improvement
PTH: 0.8% improvement



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63159 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
6bb816a3b895e9c983d89b22d510dca58a0eb75e 24-Feb-2008 Ted Kremenek <kremenek@apple.com> In FileManager: use full paths to unique files and directories on Windows,
since inodes are bogus abstraction on that platform.

Patch by Argiris Kirtzidis!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47535 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
0bc735ffcfb223c0186419547abaa5c84482663e 29-Dec-2007 Chris Lattner <sabre@nondot.org> Don't attribute in file headers anymore. See llvmdev for the
discussion of this change.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45410 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
7f1752797d4a4344b539ad9452471871c0eec64b 20-Dec-2007 Ted Kremenek <kremenek@apple.com> Renamed "FileEntry::getDev()" to "FileEntry::getDevice()"


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45240 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
bca6d125c77c93c7fa41798c15348175a6bb1267 18-Dec-2007 Ted Kremenek <kremenek@apple.com> Refactored inode and device number into FileEntry, and changed the
ADT storing FileEntry's in FileManager from a map to a set.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45184 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
da9954400aab56bc3df60eb1b7be2489121c6166 18-Dec-2007 Ted Kremenek <kremenek@apple.com> Added to FileEntry a pointer to the <dev_t,ino_t> pair for the file, and
accessors to FileEntry to query these values.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45171 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
8fbc88e5faee291e2e5039ec4c1dac3cfd219704 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Removed serialization of FileEntry and DirectoryEntry. This objects will
now be lazily recreated upon deserialization.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44585 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
9551a2cbe5fdf316c126a39ec310208c2121321f 04-Dec-2007 Ted Kremenek <kremenek@apple.com> Implemented serialization of FileEntry and DirectoryEntry.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44573 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
f17765d202d1ec34ada7ff3f18d18731588143c2 30-Oct-2007 Chris Lattner <sabre@nondot.org> update some comments.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43506 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h
5f016e2cb5d11daeb237544de1c5d59f20fe1a6e 11-Jul-2007 Reid Spencer <rspencer@reidspencer.com> Stage two of getting CFE top correct.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39734 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/include/clang/Basic/FileManager.h