[clang] [clang-repl] [codegen] Reduce the state in TBAA. NFC for static compilation. (PR #98138)
Vassil Vassilev via cfe-commits
cfe-commits at lists.llvm.org
Tue Jul 9 06:46:44 PDT 2024
vgvassilev wrote:
> Would it be possible to add a test case?
Good point. Forgot to `git add` it.
> Could you add a bit more detail how different mange contexts cause crashes in TBAA?
On a high level clang's CodeGen is designed to work with a single llvm::Module. However, incremental compilation assumes multiple llvm::Modules per each incremental input. We trick CodeGen by creating a new CodeGenModule for each input. However, CodeGen has various of places where it caches things. That is, for convenience we store a reference to the CodeGenModule (CGM), MangleContext (MContext) and others which points to memory that was destroyed in the multi-module setup.
This patch essentially reduces the state we have and decreases the chances to hit something that was gone. It still accesses the same objects via CodeGenTypes (CGTypes) but they are connected to the correct CodeGenModule and MangleContext.
The approach is fragile but that's the only way I could think of to support the multi-module setups without major refactorings of CodeGen. It has been reasonably reliable over the years but we hit things like that occasionally...
Does that make sense?
https://github.com/llvm/llvm-project/pull/98138
More information about the cfe-commits
mailing list