aaron.ballman added a comment.

In D143418#4175381 <https://reviews.llvm.org/D143418#4175381>, @vedgy wrote:

> I am implementing the `StorePreamblesInMemory` bool option discussed earlier. 
>  It would be nice to be able to modify it at any time, because it can be an 
> option in an IDE's UI and requiring to restart an IDE for the option change 
> to take effect is undesirable. In order to make the setter thread-safe, the 
> option can be stored as `std::atomic<bool> StorePreamblesInMemory` in `class 
> CIndexer` and stored/loaded with `memory_order_relaxed`. Setting this option 
> would apply only to subsequent `clang_parseTranslationUnit_Impl()` calls.

Hmmm, don't relaxed loads and stores still have the potential to be racey? I 
thought you needed a release on the store and an acquire on the load (or 
sequential consistency), but this is definitely not my area of expertise.

> The option can also be added to `CXIndexOptions` in order to allow setting 
> its initial value reliably (not worrying whether it could be used before the 
> setter gets called after index construction).
>
> Is adding both the setter and the `CXIndexOptions` member OK or would you 
> prefer only one of these two?

It's a bit odd to me that we're deprecating the global option setters to turn 
around and add a new global option setter. The old interfaces are not thread 
safe and the new one is thread safe, so I get why the desire exists and is 
reasonable, but (personally) I'd like to get rid of the option state setters 
entirely someday. What I was envisioning was that the index creation would get 
global options and if we wanted per-TU options, we'd add an interface akin to 
`clang_parseTranslationUnit()` which takes another options struct for per-TU 
options. (Perhaps the default values for those options come from the global 
options -- e.g., `DisplayDiagnostics` is set at the global level but could be 
overridden for a single TU). Do you have thoughts about that approach?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D143418

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

Reply via email to