nridge added a comment.

I think the sticking point for just having `QueryDriverDatabase` run after the 
entirety of `CommandMangler` is this check 
<https://searchfox.org/llvm/rev/f213128b292da85f68eeebbb68cba1541e1c39e2/clang-tools-extra/clangd/CompileCommands.cpp#160-165>
 in `resolveDriver()`, which replaces e.g. `gcc` with `/path/to/clang/bin/gcc`, 
which likely does not actually exist (i.e. `QueryDriverDatabase` will not be 
able to query it, when it might have been able to look up `gcc` in `PATH`).

Do you know what the purpose of this logic in `resolveDriver()` is, and in 
particular:

- why is `gcc` treated differently than say `gcc-12`?
- why is turning `gcc` into `/path/to/clang/bin/gcc` performed **before** 
trying to resolve `gcc` against `PATH`?

If we can change the order of the checks in `resolveDriver()` such that we try 
to resolve `gcc` against `PATH` first, and only turn it into 
`/path/to/clang/bin/gcc` if it was not found in `PATH`, I think that would not 
interfere with `QueryDriverDatabase`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D133757/new/

https://reviews.llvm.org/D133757

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to