Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[C++20] [Modules] [Reduced BMI] Don't eagerly write static entities in
module purview For, ``` export module A; static int impl() { ... } export int func() { return impl(); } ``` Previously, even with reduced BMI, the function `impl` will be emitted into the BMI. After the patch, the static entities in module purview won't get emitted eagerly. Now the static entities may only be emitted if required. Note that, this restriction is actually more relaxed than the language standard required. The language spec said, the program is ill-formed if any TU-local entities get exposed. However, we can't do this since there are many static entities in the headers of existing libraries. Forbidding that will cause many existing program fail immediately. Another note here is, we can't do this for non-static non-exported entities, they can be used for other module units within the same module.
- Loading branch information