llvm-project/clang
Ben Barham fe2478d44e [VFS] RedirectingFileSystem only replace path if not already mapped
If the `ExternalFS` has already remapped to an external path then
`RedirectingFileSystem` should not change it to the originally provided
path. This fixes the original path always being used if multiple VFS
overlays were provided and the path wasn't found in the highest (ie.
first in the chain).

For now this is accomplished through the use of a new
`ExposesExternalVFSPath` field on `vfs::Status`. This flag is true when
the `Status` has an external path that's different from its virtual
path, ie. the contained path is the external path. See the plan in
`FileManager::getFileRef` for where this is going - eventually we won't
need `IsVFSMapped` any more and all returned paths should be virtual.

Resolves rdar://90578880 and llvm-project#53306.

Reviewed By: dexonsmith

Differential Revision: https://reviews.llvm.org/D123398
2022-04-11 14:52:48 -07:00
..
bindings
cmake [CMake][Fuchsia] Include bolt 2022-04-06 22:48:17 -07:00
docs [docs] Remove outdated -fexperimental-new-pass-manager for profile data remapping support 2022-04-11 13:49:06 -07:00
examples clang-analyzer plugins require LLVM_ENABLE_PLUGINS also 2022-02-16 11:59:09 -05:00
include [clang][extract-api] Emit "functionSignature" in SGF for ObjC methods. 2022-04-11 19:05:24 +01:00
lib [VFS] RedirectingFileSystem only replace path if not already mapped 2022-04-11 14:52:48 -07:00
runtime Fix running orc-rt tests with LLVM_BUILD_EXTERNAL_COMPILER_RT 2022-01-25 08:27:40 -08:00
test [VFS] RedirectingFileSystem only replace path if not already mapped 2022-04-11 14:52:48 -07:00
tools [OpenMP] Do not use the default pipeline without optimizations 2022-04-11 17:27:38 -04:00
unittests [test][clang] Use -clear-ast-before-backend instead of -flegacy-pass-manager in CommandLineTest 2022-04-11 14:06:40 -07:00
utils Revert "Reland "[RISCV][NFC] Moving RVV intrinsic type related util to llvm/Support"" 2022-04-08 16:20:19 +08:00
www [clang] Document p1703 not needed 2022-04-05 06:54:31 -07:00
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt [Clang] Enable opaque pointers by default 2022-04-11 11:13:45 +02:00
CODE_OWNERS.TXT
INSTALL.txt
LICENSE.TXT
ModuleInfo.txt
NOTES.txt
README.txt Replace links to archived mailing lists by links to Discourse forums 2022-03-23 10:10:20 -04:00

README.txt

//===----------------------------------------------------------------------===//
// C Language Family Front-end
//===----------------------------------------------------------------------===//

Welcome to Clang.  This is a compiler front-end for the C family of languages
(C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM
compiler infrastructure project.

Unlike many other compiler frontends, Clang is useful for a number of things
beyond just compiling code: we intend for Clang to be host to a number of
different source-level tools.  One example of this is the Clang Static Analyzer.

If you're interested in more (including how to build Clang) it is best to read
the relevant web sites.  Here are some pointers:

Information on Clang:             http://clang.llvm.org/
Building and using Clang:         http://clang.llvm.org/get_started.html
Clang Static Analyzer:            http://clang-analyzer.llvm.org/
Information on the LLVM project:  http://llvm.org/

If you have questions or comments about Clang, a great place to discuss them is
on the Clang forums:
  https://discourse.llvm.org/c/clang/

If you find a bug in Clang, please file it in the LLVM bug tracker:
  http://llvm.org/bugs/