summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/VirtualFileSystem.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Make VFS and FileManager match the current MemoryBuffer API.Benjamin Kramer2014-10-261-49/+34
| | | | | | | This eliminates converting back and forth between the 3 formats and gives us a more homogeneous interface. llvm-svn: 220657
* Update for llvm API change.Rafael Espindola2014-08-271-1/+1
| | | | llvm-svn: 216576
* Update for llvm api changes.Rafael Espindola2014-08-171-1/+1
| | | | llvm-svn: 215856
* Convert a few ownership comments with std::unique_ptr.Rafael Espindola2014-08-171-8/+7
| | | | llvm-svn: 215853
* VirtualFileSystem: Correctly generate the mapping for an empty VFSJustin Bogner2014-07-151-23/+22
| | | | | | | In r209332 I accidentally broke generation of empty VFS maps. This fixes the issue and adds a test. llvm-svn: 213028
* Update for llvm api change.Rafael Espindola2014-07-061-3/+8
| | | | llvm-svn: 212408
* Add vfs::recursive_directory_iteratorBen Langmuir2014-06-251-0/+35
| | | | | | | | | For now, this is only used by its unit tests. It is similar to the API in llvm::sys::fs::recursive_directory_iterator, but without some of the more complex features like requesting that the iterator not recurse into the next directory, for example. llvm-svn: 211732
* Add directory_iterator for (non-recursive) iteration of VFS directoriesBen Langmuir2014-06-241-7/+191
| | | | | | | | The API is based on sys::fs::directory_iterator, but it allows iterating over overlays and the yaml-based VFS. For now, it isn't used by anything (except its tests). llvm-svn: 211623
* Update for llvm api change.Rafael Espindola2014-06-131-12/+13
| | | | llvm-svn: 210921
* Refer to error_code with the std prefix.Rafael Espindola2014-06-121-39/+41
| | | | llvm-svn: 210817
* Add a std:: prefix in cases where ADL would have failed on windows.Rafael Espindola2014-06-121-8/+8
| | | | | | This is in preparation for removing make_error_code from the llvm namespace. llvm-svn: 210745
* Use generic_category from the std namespace.Rafael Espindola2014-06-121-1/+1
| | | | llvm-svn: 210736
* Errno should use generic_category.Rafael Espindola2014-06-121-1/+1
| | | | | | Sorry, no testcase, just noticed while trying to remove llvm's system_error.h llvm-svn: 210727
* Use std::error_code instead of llvm::error_code.Rafael Espindola2014-06-111-12/+12
| | | | | | This is an update for a llvm api change. llvm-svn: 210688
* Use make_error_code in preparation for making errc an enum class.Rafael Espindola2014-05-311-8/+8
| | | | llvm-svn: 209956
* Use error_code() instead of error_code::succes()Rafael Espindola2014-05-311-3/+3
| | | | | | | There is no std::error_code::success, so this removes much of the noise in transitioning to std::error_code. llvm-svn: 209949
* Stopgap fix for finding module for a file mapped in the VFSBen Langmuir2014-05-231-2/+4
| | | | | | | | | | | | | | | | If we lookup a path using its 'real' path first, we need to ensure that when we run header search we still use the VFS-mapped path or we will not be able to find the corresponding module for the header. The real problem is that we tie the name of a file to its underlying FileEntry, which is uniqued by inode, so we only ever get the first name it is looked up by. This doesn't work with modules, which rely on a specific file system structure. I'm hoping to have time to write up a proposal for fixing this more permanently soon, but as a stopgap this patch updates the name of the file's directory if it comes from a VFS mapping. llvm-svn: 209534
* VirtualFileSystem: Fix a few directory traversal bugs in VFSWriterJustin Bogner2014-05-211-81/+92
| | | | | | | | | | | There are a couple of issues with writing VFS maps that are awkward to fix within the current mutually recursive approach. Instead, replace the algorithm with an iterative version that uses an explicit stack of directories. Includes tests for cases the old approach was tripping on. llvm-svn: 209332
* VirtualFileSystem: Fix false positives in YAMLVFSWriter::containedInJustin Bogner2014-05-201-1/+10
| | | | | | | | Checking if a path starts with another path isn't sufficient for determining if one is contained within the heirarchy of the other. We need to ensure that the substring ends at a directory boundary. llvm-svn: 209250
* VirtualFileSystem: Add YAMLVFSWriter to generate VFS mapping filesJustin Bogner2014-05-201-0/+116
| | | | | | | | | This moves the logic to write a JSON VFS mapping from the C api into VirtualFileSystem, so that we can use it internally. No functional change. llvm-svn: 209241
* [C++11] Use 'nullptr'.Craig Topper2014-05-081-19/+19
| | | | llvm-svn: 208280
* [Basic/FileManager] Propagate whether a file 'IsVolatile' to the file ↵Argyrios Kyrtzidis2014-05-051-5/+9
| | | | | | | | opening functions. Needs llvm r208007. llvm-svn: 208008
* [C++11] Avoid implicit conversion of ArrayRef to std::vector and use move ↵Benjamin Kramer2014-03-101-5/+1
| | | | | | semantics where appropriate. llvm-svn: 203477
* [C++11] Replace OwningPtr include with <memory>.Ahmed Charles2014-03-091-1/+1
| | | | llvm-svn: 203389
* Replace OwningPtr with std::unique_ptr.Ahmed Charles2014-03-071-10/+10
| | | | | | This compiles cleanly with lldb/lld/clang-tools-extra/llvm. llvm-svn: 203279
* Change OwningPtr::take() to OwningPtr::release().Ahmed Charles2014-03-071-1/+1
| | | | | | This is a precursor to moving to std::unique_ptr. llvm-svn: 203275
* Attempt to re-enable the VFS unittests on WindowsBen Langmuir2014-03-051-2/+4
| | | | | | | Using a //net/ path to hopefully avoid problems with non-absolute paths on Windows. llvm-svn: 203010
* Support relative paths in VFSFromYAMLBen Langmuir2014-03-041-3/+10
| | | | | | | | | Use llvm::sys::fs::make_absolute to get an absolute path before matching. Also, allow "." directories to enable testing. ".." is still not supported, and will require crossing file system boundaries to implement correctly. llvm-svn: 202903
* [C++11] Use std::atomic instead of LLVM's.Benjamin Kramer2014-03-021-3/+3
| | | | | | No intended functionality change. llvm-svn: 202652
* Switch all uses of LLVM_OVERRIDE to just use 'override' directly.Craig Topper2014-03-021-8/+8
| | | | llvm-svn: 202625
* [C++11] Switch from the llvm_move macro to directly calling std::move.Chandler Carruth2014-03-021-3/+3
| | | | llvm-svn: 202611
* Move private classes into anonymous namespaces.Benjamin Kramer2014-03-011-0/+4
| | | | llvm-svn: 202595
* Reapply fixed "Honour 'use-external-names' in FileManager"Ben Langmuir2014-02-281-8/+29
| | | | | | | | | | | | | | | | Was r202442 There were two issues with the original patch that have now been fixed. 1. We were memset'ing over a FileEntry in a test case. After adding a std::string to FileEntry, this still happened to not break for me. 2. I didn't pass the FileManager into the new compiler instance in compileModule. This was hidden in some cases by the fact I didn't clear the module cache in the test. Also, I changed the copy constructor for FileEntry, which was memcpy'ing in a (now) unsafe way. llvm-svn: 202539
* Revert "Honour 'use-external-names' in FileManager"Ben Langmuir2014-02-271-29/+8
| | | | | | Revert r202442, which broke the buildbots. llvm-svn: 202443
* Honour 'use-external-names' in FileManagerBen Langmuir2014-02-271-8/+29
| | | | | | | | Pass through the externally-visible names that we got from the VFS down to FileManager, and test that this is the name showing up in __FILE__, diagnostics, and debug information. llvm-svn: 202442
* Add a 'use-external-names' option to VFS overlay filesBen Langmuir2014-02-271-15/+46
| | | | | | | | | | | | | | | | When true, sets the name of the file to be the name from 'external-contents'. Otherwise, you get the virtual path that the file was looked up by. This will not affect any non-virtual paths, or fully virtual paths (for which there is no reasonable 'external' name anyway). The setting is available globally, but can be overriden on a per-file basis. The goal is that this setting will control which path you see in debug info, diagnostics, etc. which are sensitive to which path is used. That will come in future patches that pass the name through to FileManager. llvm-svn: 202329
* Add a driver option -ivfsoverlayBen Langmuir2014-02-251-1/+1
| | | | | | | Reads the description of a virtual filesystem from a file and overlays it over the real file system. llvm-svn: 202176
* Allow multi-component paths in VFS file nodesBen Langmuir2014-02-251-20/+31
| | | | | | | | | | | | | | | | This allows the 'name' field to contain a path, like { 'type': 'directory', 'name': '/path/to/dir', 'contents': [ ... ] } which not only simplifies reading and writing these files (for humans), but makes it possible to easily modify locations via textual replacement, which would not have worked in the old scheme. E.g. sed s:<ROOT>:<NEW ROOT> llvm-svn: 202109
* Pass through context for DiagHandler in VFSBen Langmuir2014-02-241-2/+5
| | | | | | | This allows the unit tests to not use global state when checking diagnostics. llvm-svn: 202072
* Silence a warning from r201905Ben Langmuir2014-02-221-0/+1
| | | | | | | Avoid a warning about reaching the end of a non-void function after a covered switch. llvm-svn: 201919
* Add a VFSFromYAML class and a parser to create itBen Langmuir2014-02-211-4/+576
| | | | | | | | | | | | | | | Provides a way to create a virtual file system using a YAML file that supports mapping a file to a path on an 'external' file system. The external file system will typically be the 'real' file system, but for testing it can be changed. A future patch will add a clang option to allow the user to specify such a file and overlay it, but for now this code is only exercised by the unit tests. Differential Revision: http://llvm-reviews.chandlerc.com/D2835 llvm-svn: 201905
* Recommit virtual file systemBen Langmuir2014-02-201-0/+193
| | | | | | | | | | | Previously reverted in r201755 due to causing an assertion failure. I've removed the offending assertion, and taught the CompilerInstance to create a default virtual file system inside createFileManager. In the future, we should be able to reach into the CompilerInvocation to customize this behaviour without breaking clients that don't care. llvm-svn: 201818
* Reverting the virtual file system implementation, because it triggers an ↵Juergen Ributzka2014-02-201-193/+0
| | | | | | | | | | assertion in our internal build bots. This reverts commits 201618, 201635, 201636, 201639, 201685, 201691, and 201696. llvm-svn: 201755
* Reduce verbosity in the virtual file system using LLVM.hBen Langmuir2014-02-191-8/+6
| | | | | | No functional change llvm-svn: 201696
* Remove typo from r201618Ben Langmuir2014-02-191-1/+1
| | | | | | Fixes PR18895 llvm-svn: 201685
* Add an OverlayFileSystem classBen Langmuir2014-02-191-0/+33
| | | | | | | Provides a way to merge multiple vfs::FileSystem objects into a single filesystem. llvm-svn: 201635
* Initial implementation of virtual file systemBen Langmuir2014-02-191-0/+162
This adds the minimum virtual file system support to start migrating FileManager onto the VFS. Originally discussed here: http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-February/035188.html Differential Revision: http://llvm-reviews.chandlerc.com/D2745 llvm-svn: 201618
OpenPOWER on IntegriCloud