jansvoboda11 added inline comments.

================
Comment at: clang/include/clang/Driver/Options.td:246
 
+class EmptyKPM<string base> : KeyPathAndMacro<"", "", ""> {}
 class DiagnosticOpts<string base>
----------------
awarzynski wrote:
> jansvoboda11 wrote:
> > awarzynski wrote:
> > > @jansvoboda11 , is this the right approach here? I'd like use 
> > > `BoolFOption` in Flang, but we don't need `KeyPathAndMacro` just yet. We 
> > > may do in the future.
> > There was an `EmptyKPM` class present in the code before, but only as an 
> > implementation detail of the marshalling system. People started using it 
> > with `BoolFOption` to conveniently declare pairs Clang driver flags. I'm 
> > not a fan since the whole `BooFOption` is designed around the keypath and 
> > its marshalling. Putting a "null" keypath in `BoolFOption` and then talking 
> > about its defaults and the effect of each flag seems highly unintuitive to 
> > me and it's essentially dead code. I'd prefer a different approach in this 
> > patch unless you have plans to switch to the marshalling infrastructure and 
> > remove `EmptyKPM` in the short term.
> > 
> > Would something similar to `OptInFFlag` and `OptOutFFlag` work for you? You 
> > could generalize it (remove `Flags<[CC1Option]>`), make use of it for 
> > Flang's options directly and forward the current `Opt{In,Out}FFlag` to the 
> > generalization while specifying the `CC1Option`. WDYT?
> Thanks for the quick feedback! Initially when I saw `CC1Option` in 
> `CC1Option`/`OptOutFFlag`, I immediately decided to explore alternatives. But 
> I agree with everything that you said and am happy to generalize these 
> multiclasses (instead of adding `EmptyKPM`). I don't see why it wouldn't work 
> for what we currently need in Flang. I should be able to update this patch 
> tomorrow.
> 
> Btw, what's the key benefit of the marshaling infra? Is that for being able 
> to restore the original compiler invocation from instances of 
> `CompilerInvocation`? We are still busy with other things, but definitely 
> don't want Flang to miss out here.
Cool, happy to help.

We're using marshalling for "implicitly discovered, explicitly built Clang 
modules" via `clang-scan-deps`. We're able to change the `CompilerInvocation` 
of the original TU for the purpose of explicit build of the discovered modules, 
serialize it to `clang -cc1` command-line and report it to the build system.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D105881

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

Reply via email to