Commit Graph

27 Commits

Author SHA1 Message Date
Craig Topper 603e37c3dd [C++11] Use 'nullptr'.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208280 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-08 06:41:40 +00:00
Argyrios Kyrtzidis bd80493223 [Basic/FileManager] Propagate whether a file 'IsVolatile' to the file opening functions.
Needs llvm r208007.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208008 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-05 21:57:46 +00:00
Benjamin Kramer c81e2906c1 [C++11] Avoid implicit conversion of ArrayRef to std::vector and use move semantics where appropriate.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@203477 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-10 17:55:02 +00:00
Ahmed Charles f8b74ee5f0 [C++11] Replace OwningPtr include with <memory>.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@203389 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-09 11:36:40 +00:00
Ahmed Charles 70639e8de3 Replace OwningPtr with std::unique_ptr.
This compiles cleanly with lldb/lld/clang-tools-extra/llvm.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@203279 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-07 20:03:18 +00:00
Ahmed Charles 789a4f820d Change OwningPtr::take() to OwningPtr::release().
This is a precursor to moving to std::unique_ptr.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@203275 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-07 19:33:25 +00:00
Ben Langmuir 75f094ca56 Attempt to re-enable the VFS unittests on Windows
Using a //net/ path to hopefully avoid problems with non-absolute paths
on Windows.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@203010 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-05 21:32:20 +00:00
Ben Langmuir 0366aa4b3f Support relative paths in VFSFromYAML
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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202903 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-04 22:34:50 +00:00
Benjamin Kramer 3135d45300 [C++11] Use std::atomic instead of LLVM's.
No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202652 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-02 17:08:31 +00:00
Craig Topper caa4c61ee5 Switch all uses of LLVM_OVERRIDE to just use 'override' directly.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202625 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-02 09:32:10 +00:00
Chandler Carruth f4481e0e41 [C++11] Switch from the llvm_move macro to directly calling std::move.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202611 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-02 04:02:40 +00:00
Benjamin Kramer f755b9d247 Move private classes into anonymous namespaces.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202595 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-01 17:21:22 +00:00
Ben Langmuir d066fe94b0 Reapply fixed "Honour 'use-external-names' in FileManager"
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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202539 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-28 21:16:07 +00:00
Ben Langmuir 86c8d8ee06 Revert "Honour 'use-external-names' in FileManager"
Revert r202442, which broke the buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202443 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-27 23:48:03 +00:00
Ben Langmuir 2b1bc151cb Honour 'use-external-names' in FileManager
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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202442 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-27 23:27:54 +00:00
Ben Langmuir e40e43d033 Add a 'use-external-names' option to VFS overlay files
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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202329 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-27 00:25:12 +00:00
Ben Langmuir 89de580b52 Add a driver option -ivfsoverlay
Reads the description of a virtual filesystem from a file and overlays
it over the real file system.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202176 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-25 18:23:47 +00:00
Ben Langmuir 2e63a1199a Allow multi-component paths in VFS file nodes
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>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202109 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-25 04:34:14 +00:00
Ben Langmuir 02ed638412 Pass through context for DiagHandler in VFS
This allows the unit tests to not use global state when checking
diagnostics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@202072 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-24 20:56:37 +00:00
Ben Langmuir 28d7f1af85 Silence a warning from r201905
Avoid a warning about reaching the end of a non-void function after a
covered switch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201919 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-22 00:44:02 +00:00
Ben Langmuir 9298d56cfb Add a VFSFromYAML class and a parser to create it
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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201905 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-21 23:39:37 +00:00
Ben Langmuir d7596d6412 Recommit virtual file system
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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201818 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-20 21:59:23 +00:00
Juergen Ributzka 6c03a38d81 Reverting the virtual file system implementation, because it triggers an assertion
in our internal build bots.

This reverts commits 201618, 201635, 201636, 201639, 201685, 201691, and 201696.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201755 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-20 05:24:58 +00:00
Ben Langmuir 05d56ef2c5 Reduce verbosity in the virtual file system using LLVM.h
No functional change

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201696 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-19 16:36:49 +00:00
Ben Langmuir 423f00af0c Remove typo from r201618
Fixes PR18895

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201685 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-19 15:36:37 +00:00
Ben Langmuir 0d3cd059d7 Add an OverlayFileSystem class
Provides a way to merge multiple vfs::FileSystem objects into a single
filesystem.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201635 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-19 03:29:17 +00:00
Ben Langmuir 91e3d5860a Initial implementation of virtual file system
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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201618 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-19 00:10:30 +00:00