[clang-tools-extra] [clangd] [C++20] [Modules] Add scanning cache (PR #125988)
Chuanqi Xu via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 13 02:10:50 PST 2025
ChuanqiXu9 wrote:
> > * Now the ScanningProjectModules are owned by different calls to `ModulesBuilder::buildPrerequisiteModulesFor`. So we don't need to care about thread safety in ScanningProjectModules. And if we make it the underlying ProjectModules, we need to care about the thead safety and then we would have a centralized scanner. It is not bad but it might be a bigger change.
>
> Not sure I understand the argument here. Please note that I am not suggesting to store a `ScanningProjectModules` (or any other `ProjectModules`) inside `CachingProjectModules`. We can't even if we wanted to, in theory any source file can belong to a different `ProjectModules`. Hence we store the `GlobalCompilationDatabase`, so that we can access a relevant `ProjectModules` when the cache is invalid or we don't have an entry. Hence we're not sharing any `ScanningProjectModules` instances across threads.
>
> As for thread-safety concerns in `CachingProjectModules` itself, I think we have the exact same requirements as this patch (https://github.com/llvm/llvm-project/pull/125988/files#diff-bfbef59d036ce319b5ed9b774f6ddb8dcd7efdba3384de03cb9a37f23ef678ba), basically underlying cache can be accessed concurrently, but rest should be outside the critical path.
>
> Does that make sense? If not could you elaborate on your concern?
Yeah, I though you were saying to store the underlying ProjectModules. Now it is fine.
https://github.com/llvm/llvm-project/pull/125988
More information about the cfe-commits
mailing list