llvm-project/clang/unittests
Bruno Cardoso Lopes f6a0a72dbe [VFS] Reapply #2: Reconstruct the VFS overlay tree for more accurate lookup
Reapply r269100 and r269270, reverted due to
https://llvm.org/bugs/show_bug.cgi?id=27725. Isolate the testcase that
corresponds to the new feature side of this commit and skip it on
windows hosts until we find why it does not work on these platforms.

Original commit message:

The way we currently build the internal VFS overlay representation leads
to inefficient path search and might yield wrong answers when asked for
recursive or regular directory iteration.

Currently, when reading an YAML file, each YAML root entry is placed
inside a new root in the filesystem overlay. In the crash reproducer, a
simple "@import Foundation" currently maps to 43 roots, and when looking
up paths, we traverse a directory tree for each of these different
roots, until we find a match (or don't). This has two consequences:

- It's slow.
- Directory iteration gives incomplete results since it only return
results within one root - since contents of the same directory can be
declared inside different roots, the result isn't accurate.

This is in part fault of the way we currently write out the YAML file
when emitting the crash reproducer - we could generate only one root and
that would make it fast and correct again. However, we should not rely
on how the client writes the YAML, but provide a good internal
representation regardless.

Build a proper virtual directory tree out of the YAML representation,
allowing faster search and proper iteration. Besides the crash
reproducer, this potentially benefits other VFS clients.

llvm-svn: 269327
2016-05-12 19:13:07 +00:00
..
AST [ASTImporter] Implement some expression-related AST node import. 2016-04-14 11:51:27 +00:00
ASTMatchers Add an AST matcher for string-literal length 2016-05-12 04:20:04 +00:00
Basic [VFS] Reapply #2: Reconstruct the VFS overlay tree for more accurate lookup 2016-05-12 19:13:07 +00:00
CodeGen Make sure the LLVMContext outlive the CompilerInstance 2016-04-14 05:37:41 +00:00
Driver Remove autoconf support 2016-01-26 21:30:40 +00:00
Format clang-format: [JS] respect clang-format off when requoting strings. 2016-05-12 11:20:32 +00:00
Frontend Use Backend_EmitMCNull for null codegen unit tests. 2016-02-18 20:27:16 +00:00
Lex Basic: move CodeGenOptions from Frontend 2016-04-07 17:49:44 +00:00
Rewrite Remove autoconf support 2016-01-26 21:30:40 +00:00
Sema Remove autoconf support 2016-01-26 21:30:40 +00:00
StaticAnalyzer Remove autoconf support 2016-01-26 21:30:40 +00:00
Tooling [tooling] FixItHint Tooling refactoring 2016-05-11 14:31:39 +00:00
libclang tests: Add explicit -stdlib=libstdc++ to tests that require it 2016-02-12 07:48:28 +00:00
CMakeLists.txt [CMake] Don't build the libclang tests unless you're building libclang 2015-12-04 23:12:19 +00:00