[clangd] Resolve driver symlinks, and look up unknown relative drivers in PATH.
Summary: This fixes a reported bug: if clang and libc++ are installed under /usr/lib/llvm-11/... but there'- a symlink /usr/bin/clang++-11, then a compile_commands.json with "/usr/bin/clang++-11 -stdlib=libc++" would previously look for libc++ under /usr/include instead of /usr/lib/llvm-11/include. The PATH change makes this work if the compiler is just "clang++-11" too. As this is now doing IO potentially on every getCompileCommand(), we cache the results for each distinct driver. While here: - Added a Memoize helper for this as multithreaded caching is a bit noisy. - Used this helper to simplify QueryDriverDatabase and reduce blocking there. (This makes use of the fact that llvm::Regex is now threadsafe) Reviewers: kadircet Subscribers: jyknight, ormris, ilya-biryukov, MaskRay, jkorous, arphaman, jfb, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D75414
Loading
Please register or sign in to comment