llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Jan Svoboda (jansvoboda11) <details> <summary>Changes</summary> The same principle as #<!-- -->135473, #<!-- -->135737, #<!-- -->136178, #<!-- -->136601 & #<!-- -->137059. --- Full diff: https://github.com/llvm/llvm-project/pull/137227.diff 2 Files Affected: - (modified) clang/include/clang/Frontend/CompilerInstance.h (+10-3) - (modified) clang/lib/Frontend/CompilerInstance.cpp (+8-4) ``````````diff diff --git a/clang/include/clang/Frontend/CompilerInstance.h b/clang/include/clang/Frontend/CompilerInstance.h index 8c91a2a86cfcd..b5b4de03e45f1 100644 --- a/clang/include/clang/Frontend/CompilerInstance.h +++ b/clang/include/clang/Frontend/CompilerInstance.h @@ -839,16 +839,23 @@ class CompilerInstance : public ModuleLoader { class ThreadSafeCloneConfig { IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS; DiagnosticConsumer &DiagConsumer; + std::shared_ptr<ModuleDependencyCollector> ModuleDepCollector; public: - ThreadSafeCloneConfig(IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS, - DiagnosticConsumer &DiagConsumer) - : VFS(std::move(VFS)), DiagConsumer(DiagConsumer) { + ThreadSafeCloneConfig( + IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS, + DiagnosticConsumer &DiagConsumer, + std::shared_ptr<ModuleDependencyCollector> ModuleDepCollector = nullptr) + : VFS(std::move(VFS)), DiagConsumer(DiagConsumer), + ModuleDepCollector(std::move(ModuleDepCollector)) { assert(this->VFS && "Clone config requires non-null VFS"); } IntrusiveRefCntPtr<llvm::vfs::FileSystem> getVFS() const { return VFS; } DiagnosticConsumer &getDiagConsumer() const { return DiagConsumer; } + std::shared_ptr<ModuleDependencyCollector> getModuleDepCollector() const { + return ModuleDepCollector; + } }; private: diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp index 1526ea53add7d..58a01459f3c64 100644 --- a/clang/lib/Frontend/CompilerInstance.cpp +++ b/clang/lib/Frontend/CompilerInstance.cpp @@ -1257,10 +1257,14 @@ std::unique_ptr<CompilerInstance> CompilerInstance::cloneForModuleCompileImpl( Instance.GetDependencyDirectives = GetDependencyDirectives->cloneFor(Instance.getFileManager()); - // If we're collecting module dependencies, we need to share a collector - // between all of the module CompilerInstances. Other than that, we don't - // want to produce any dependency output from the module build. - Instance.setModuleDepCollector(getModuleDepCollector()); + if (ThreadSafeConfig) { + Instance.setModuleDepCollector(ThreadSafeConfig->getModuleDepCollector()); + } else { + // If we're collecting module dependencies, we need to share a collector + // between all of the module CompilerInstances. Other than that, we don't + // want to produce any dependency output from the module build. + Instance.setModuleDepCollector(getModuleDepCollector()); + } Inv.getDependencyOutputOpts() = DependencyOutputOptions(); return InstancePtr; `````````` </details> https://github.com/llvm/llvm-project/pull/137227 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits