[clang] [WIP][Safe Buffers] Serialize unsafe_buffer_usage pragmas (PR #92031)

Ziqing Luo via cfe-commits cfe-commits at lists.llvm.org
Wed May 15 12:58:00 PDT 2024


ziqingluo-90 wrote:

> I'm very happy that this is going somewhere! Everything makes sense to me but I also don't know a lot about this stuff.
> 
> > During serialization, it only serializes regions of the current translation unit. Regions from loaded files are not serialized.
> 
> Hmm how does this work? When a precompiled header includes another precompiled header, do they both get loaded independently and then you get to combine the maps?

For loading multiple PCHs, it is a chain.  Suppose `TU` includes pch `B` and `B` includes pch `C`.   So one would compile and emit PCHs starting from `C`, then do it for `B` with `C` being loaded.  When compile `A`, it includes pch `B` from the command line and clang actually loads `C` and `B` separately.

It is the same story for modules, except that modules form a DAG instead of a chain.   Clang will load each module file in an order with respect to the DAG.   So for each module/PCH emitted by clang,  only their own opt-out regions need to be serialized.

https://github.com/llvm/llvm-project/pull/92031


More information about the cfe-commits mailing list