Go to file
Bruno Cardoso Lopes ab83dc646d [VFS] Reapply r269100: Reconstruct the VFS overlay tree for more accurate lookup
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.

This patch builds 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: 269270
2016-05-12 03:23:36 +00:00
clang [VFS] Reapply r269100: Reconstruct the VFS overlay tree for more accurate lookup 2016-05-12 03:23:36 +00:00
clang-tools-extra [clang-tidy] Add missing dependency of libtooling to misc module 2016-05-11 21:32:29 +00:00
compiler-rt [profile] profile writing cleanup 2016-05-11 23:21:22 +00:00
debuginfo-tests New round of fixes for "Always compile debuginfo-tests for the host triple" 2014-10-18 23:47:59 +00:00
libclc math: Add erf ported from amd-builtins 2016-05-06 18:02:30 +00:00
libcxx [libcxx] Prefer C++14 over C++11 when building libc++experimental. 2016-05-10 16:17:43 +00:00
libcxxabi libc++abi: make __cxa_call_unexpected visible 2016-05-11 23:56:37 +00:00
libunwind unwind: remove last instance of -Wexpansion-to-defined 2016-04-26 01:11:29 +00:00
lld [ELF] implemented -z defs option 2016-05-11 13:48:41 +00:00
lldb Keep original source path and mapped path in LineEntry 2016-05-11 22:46:53 +00:00
llgo [llgo] llgoi: separate evaluation from printing 2016-04-25 01:18:20 +00:00
llvm [SCCP] Resolve shifts beyond the bitwidth to undef 2016-05-12 03:07:40 +00:00
openmp Restore NULL flag check in __kmp_null_resume_wrapper 2016-05-12 00:54:08 +00:00
polly Invalidate unprofitable SCoPs after creation 2016-05-10 16:38:09 +00:00