[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