[PATCH] D67025: Add .inl as valid C++ header type

Sam McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Jul 20 12:31:41 PDT 2022


sammccall added a comment.

> ! In D67025#3665293 <https://reviews.llvm.org/D67025#3665293>, @aaron.ballman wrote:
>  this is why we have the `-x` option so that users can specify a specific language mode to use. Is there a reason that option does not suffice for clangd?

The difficulty here is that command-line flags are a very awkward/brittle interface but also the only one we have.

The situation we're in is:

- we have filename and a collection of `clang` flags mashed together from build system, config, and defaults
- we need a CompilerInvocation that reflects those flags... (which only Driver can provide)
- *except* that if the extension and flags don't imply a language then treat it as "c++-header" by default, rather than failing

It's very difficult to robustly manipulate the flags to achieve these effects, basically needing a model of the driver's behavior (identify every flag that can affect the parse language, remember which flags are global and which affect following filenames, and guarantee these rules never change).

What would solve the problem is a flag like `-xfallback=c++-header` to change the driver's behavior but adding that to clang is ugly.
What we may end up with is a bunch of heuristics about whether to add -x or not, which are complicated and usually buggy. We have lots of these.
I wish I had a better answer...


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D67025



More information about the cfe-commits mailing list