dexonsmith added a comment.

Thanks for talking through this with me! The direction sounds good.

In D94472#2519838 <https://reviews.llvm.org/D94472#2519838>, @jansvoboda11 
wrote:

> I think the driver command line options could be useful even after we're 
> finished

You mean the `-cc1` options used by the driver right? We shouldn't be adding 
options to the driver. I agree they should be kept.

> Yes, this requires splitting `OPTIONS_WITH_MARSHALLING`. I don't think it's a 
> big deal, because we already do that for `DiagnosticOpts`, `LangOpts` and 
> `CodegenOpts` anyway (D84673 <https://reviews.llvm.org/D84673>, D94682 
> <https://reviews.llvm.org/D94682>). I think it makes more sense to have one 
> parsing function per `*Opts`, rather than keeping it split up into 
> `Parse*Opts` and `ParseSimpleOpts`.

Okay, that's a fair point; it probably really is cleaner to have one parse / 
generate function per option class. In that case, I wonder if we can remove the 
prefix from the key paths the same way as for `DiagnosticOpts`...

>> 2. Boilerplate. Somewhat related to churn; there's a fair bit of additional 
>> boilerplate required in this approach. This makes it harder to read / 
>> understand / modify the code.
>
> Boilerplate was added mainly to `ArgList`, but we can delete that without 
> even showing up in `git blame`. Another instance is the lambda setup in 
> `ParseHeaderSearchArgs`, but I think that's pretty isolated as well. I agree 
> the code may be confusing for people not familiar with this effort, but it 
> will be me deleting the code few weeks from now, so I'm not sure how bad this 
> is. Do you worry this will cause confusion during merge conflicts down stream?

Yes, it's merge conflicts that I think would be most confusing. I think you've 
convinced me that splitting up the parsers is independently valuable, so I'm 
less concerned about the churn now.

> So people build without assertions during development? In that case, I agree 
> that erroring out on `GeneratedArgs1 != GeneratedArgs2` (in all kinds of 
> builds) would improve the experience. I don't think there's anything 
> preventing us to incorporate this into the current patch.

Sounds great. This also checks that generation is deterministic.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D94472

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

Reply via email to