mirror of
https://github.com/intel/llvm.git
synced 2026-01-24 08:30:34 +08:00
[mlir][Inliner] Keep the number of async pass managers constant
This prevents a bug in the pass instrumentation implementation where the main thread would end up with a different pass manager in different runs of the pass.
This commit is contained in:
@@ -687,10 +687,10 @@ LogicalResult
|
||||
InlinerPass::optimizeSCCAsync(MutableArrayRef<CallGraphNode *> nodesToVisit,
|
||||
MLIRContext *context) {
|
||||
// Ensure that there are enough pipeline maps for the optimizer to run in
|
||||
// parallel.
|
||||
size_t numThreads =
|
||||
std::min((size_t)llvm::hardware_concurrency().compute_thread_count(),
|
||||
nodesToVisit.size());
|
||||
// parallel. Note: The number of pass managers here needs to remain constant
|
||||
// to prevent issues with pass instrumentations that rely on having the same
|
||||
// pass manager for the main thread.
|
||||
size_t numThreads = llvm::hardware_concurrency().compute_thread_count();
|
||||
if (opPipelines.size() < numThreads) {
|
||||
// Reserve before resizing so that we can use a reference to the first
|
||||
// element.
|
||||
|
||||
Reference in New Issue
Block a user