From ffd1c0dfd52e0a021a5b938a3b778594f5c35b33 Mon Sep 17 00:00:00 2001 From: Arseniy Obolenskiy Date: Sat, 24 Oct 2026 20:24:43 +0200 Subject: [PATCH] [mlir] Skip uniquer locks when a context starts without threading (#235294) --- mlir/lib/IR/MLIRContext.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/mlir/lib/IR/MLIRContext.cpp b/mlir/lib/IR/MLIRContext.cpp index 5c1c3b062f37cc..9eae9676a2b2c3 100644 --- a/mlir/lib/IR/MLIRContext.cpp +++ b/mlir/lib/IR/MLIRContext.cpp @@ -287,8 +287,16 @@ class MLIRContextImpl { if (threadingIsEnabled) { ownedThreadPool = std::make_unique(); threadPool = ownedThreadPool.get(); + } else { + disableUniquerMultithreading(true); } } + /// Update the threading mode for each of the uniquers. + void disableUniquerMultithreading(bool disable) { + affineUniquer.disableMultithreading(disable); + attributeUniquer.disableMultithreading(disable); + typeUniquer.disableMultithreading(disable); + } ~MLIRContextImpl() { for (auto typeMapping : registeredTypes) typeMapping.second->~AbstractType(); @@ -625,10 +633,7 @@ void MLIRContext::disableMultithreading(bool disable) { impl->threadingIsEnabled = !disable; - // Update the threading mode for each of the uniquers. - impl->affineUniquer.disableMultithreading(disable); - impl->attributeUniquer.disableMultithreading(disable); - impl->typeUniquer.disableMultithreading(disable); + impl->disableUniquerMultithreading(disable); // Destroy thread pool (stop all threads) if it is no longer needed, or create // a new one if multithreading was re-enabled.