https://github.com/joker-eph created https://github.com/llvm/llvm-project/pull/83702
This is a breaking change: clients who use to create a ThreadPool must now create a DefaultThreadPool. >From aec355378bcb453adc4d697b02c69af30eb5f0ae Mon Sep 17 00:00:00 2001 From: Mehdi Amini <joker....@gmail.com> Date: Tue, 27 Feb 2024 00:31:04 -0800 Subject: [PATCH] Rename ThreadPool->DefaultThreadPool and ThreadPoolInterface->ThreadPool (NFC) --- bolt/lib/Core/ParallelUtilities.cpp | 2 +- bolt/tools/merge-fdata/merge-fdata.cpp | 2 +- lld/MachO/Writer.cpp | 2 +- lldb/include/lldb/Core/Debugger.h | 4 ++-- lldb/source/Core/Debugger.cpp | 2 +- llvm/docs/ORCv2.rst | 2 +- .../SpeculativeJIT/SpeculativeJIT.cpp | 2 +- llvm/include/llvm/Debuginfod/Debuginfod.h | 6 ++--- .../llvm/Support/BalancedPartitioning.h | 7 +++--- llvm/include/llvm/Support/ThreadPool.h | 19 ++++++++-------- llvm/lib/CodeGen/ParallelCG.cpp | 2 +- llvm/lib/DWARFLinker/Classic/DWARFLinker.cpp | 2 +- .../DWARFLinker/Parallel/DWARFLinkerImpl.cpp | 2 +- llvm/lib/DebugInfo/GSYM/DwarfTransformer.cpp | 2 +- llvm/lib/Debuginfod/Debuginfod.cpp | 3 +-- llvm/lib/ExecutionEngine/Orc/LLJIT.cpp | 4 ++-- llvm/lib/LTO/LTO.cpp | 2 +- llvm/lib/LTO/LTOBackend.cpp | 2 +- llvm/lib/LTO/ThinLTOCodeGenerator.cpp | 4 ++-- llvm/lib/Support/BalancedPartitioning.cpp | 2 +- llvm/lib/Support/ThreadPool.cpp | 2 +- llvm/tools/dsymutil/dsymutil.cpp | 2 +- llvm/tools/llvm-cov/CodeCoverage.cpp | 2 +- llvm/tools/llvm-cov/CoverageExporterJson.cpp | 2 +- llvm/tools/llvm-cov/CoverageReport.cpp | 4 ++-- llvm/tools/llvm-cov/CoverageReport.h | 4 ++-- .../tools/llvm-debuginfod/llvm-debuginfod.cpp | 2 +- llvm/tools/llvm-profdata/llvm-profdata.cpp | 2 +- llvm/tools/llvm-reduce/deltas/Delta.cpp | 2 +- llvm/unittests/ADT/LazyAtomicPointerTest.cpp | 4 ++-- llvm/unittests/Debuginfod/HTTPServerTests.cpp | 16 +++++++------- llvm/unittests/Support/ParallelTest.cpp | 2 +- llvm/unittests/Support/ThreadPool.cpp | 22 +++++++++---------- .../Support/ThreadSafeAllocatorTest.cpp | 6 ++--- mlir/include/mlir/CAPI/Support.h | 4 ++-- mlir/include/mlir/IR/MLIRContext.h | 6 ++--- mlir/include/mlir/IR/Threading.h | 2 +- mlir/lib/CAPI/IR/Support.cpp | 2 +- mlir/lib/ExecutionEngine/AsyncRuntime.cpp | 2 +- mlir/lib/IR/MLIRContext.cpp | 12 +++++----- mlir/lib/Tools/mlir-opt/MlirOptMain.cpp | 4 ++-- 41 files changed, 87 insertions(+), 90 deletions(-) diff --git a/bolt/lib/Core/ParallelUtilities.cpp b/bolt/lib/Core/ParallelUtilities.cpp index 1a28bc4346ecd56..1f5ac5655d9f98d 100644 --- a/bolt/lib/Core/ParallelUtilities.cpp +++ b/bolt/lib/Core/ParallelUtilities.cpp @@ -106,7 +106,7 @@ ThreadPool &getThreadPool() { if (ThreadPoolPtr.get()) return *ThreadPoolPtr; - ThreadPoolPtr = std::make_unique<ThreadPool>( + ThreadPoolPtr = std::make_unique<DefaultThreadPool>( llvm::hardware_concurrency(opts::ThreadCount)); return *ThreadPoolPtr; } diff --git a/bolt/tools/merge-fdata/merge-fdata.cpp b/bolt/tools/merge-fdata/merge-fdata.cpp index c6dfd3cfdc56dea..f2ac5ad4492ee52 100644 --- a/bolt/tools/merge-fdata/merge-fdata.cpp +++ b/bolt/tools/merge-fdata/merge-fdata.cpp @@ -316,7 +316,7 @@ void mergeLegacyProfiles(const SmallVectorImpl<std::string> &Filenames) { // least 4 tasks. ThreadPoolStrategy S = optimal_concurrency( std::max(Filenames.size() / 4, static_cast<size_t>(1))); - ThreadPool Pool(S); + DefaultThreadPool Pool(S); DenseMap<llvm::thread::id, ProfileTy> ParsedProfiles( Pool.getMaxConcurrency()); for (const auto &Filename : Filenames) diff --git a/lld/MachO/Writer.cpp b/lld/MachO/Writer.cpp index 65b598d1d7c422a..9b0a32c136e8b17 100644 --- a/lld/MachO/Writer.cpp +++ b/lld/MachO/Writer.cpp @@ -66,7 +66,7 @@ class Writer { template <class LP> void run(); - ThreadPool threadPool; + DefaultThreadPool threadPool; std::unique_ptr<FileOutputBuffer> &buffer; uint64_t addr = 0; uint64_t fileOff = 0; diff --git a/lldb/include/lldb/Core/Debugger.h b/lldb/include/lldb/Core/Debugger.h index 418c2403d020f48..9c5ea22242f18d3 100644 --- a/lldb/include/lldb/Core/Debugger.h +++ b/lldb/include/lldb/Core/Debugger.h @@ -52,7 +52,7 @@ namespace llvm { class raw_ostream; -class ThreadPoolInterface; +class ThreadPool; } // namespace llvm namespace lldb_private { @@ -500,7 +500,7 @@ class Debugger : public std::enable_shared_from_this<Debugger>, } /// Shared thread pool. Use only with ThreadPoolTaskGroup. - static llvm::ThreadPoolInterface &GetThreadPool(); + static llvm::ThreadPool &GetThreadPool(); /// Report warning events. /// diff --git a/lldb/source/Core/Debugger.cpp b/lldb/source/Core/Debugger.cpp index 217474d1060ac28..c4b3c64e0844b05 100644 --- a/lldb/source/Core/Debugger.cpp +++ b/lldb/source/Core/Debugger.cpp @@ -609,7 +609,7 @@ void Debugger::Initialize(LoadPluginCallbackType load_plugin_callback) { "Debugger::Initialize called more than once!"); g_debugger_list_mutex_ptr = new std::recursive_mutex(); g_debugger_list_ptr = new DebuggerList(); - g_thread_pool = new llvm::ThreadPool(llvm::optimal_concurrency()); + g_thread_pool = new llvm::DefaultThreadPool(llvm::optimal_concurrency()); g_load_plugin_callback = load_plugin_callback; } diff --git a/llvm/docs/ORCv2.rst b/llvm/docs/ORCv2.rst index add05e05a80e5fd..910ef5b9f3d02f8 100644 --- a/llvm/docs/ORCv2.rst +++ b/llvm/docs/ORCv2.rst @@ -738,7 +738,7 @@ or creating any Modules attached to it. E.g. ThreadSafeContext TSCtx(std::make_unique<LLVMContext>()); - ThreadPool TP(NumThreads); + DefaultThreadPool TP(NumThreads); JITStack J; for (auto &ModulePath : ModulePaths) { diff --git a/llvm/examples/SpeculativeJIT/SpeculativeJIT.cpp b/llvm/examples/SpeculativeJIT/SpeculativeJIT.cpp index fdd376d82da5d89..0d97d379d2279e1 100644 --- a/llvm/examples/SpeculativeJIT/SpeculativeJIT.cpp +++ b/llvm/examples/SpeculativeJIT/SpeculativeJIT.cpp @@ -136,7 +136,7 @@ class SpeculativeJIT { std::unique_ptr<ExecutionSession> ES; DataLayout DL; MangleAndInterner Mangle{*ES, DL}; - ThreadPool CompileThreads{llvm::hardware_concurrency(NumThreads)}; + DefaultThreadPool CompileThreads{llvm::hardware_concurrency(NumThreads)}; JITDylib &MainJD; diff --git a/llvm/include/llvm/Debuginfod/Debuginfod.h b/llvm/include/llvm/Debuginfod/Debuginfod.h index 99fe15ad859794c..ef03948a706c06d 100644 --- a/llvm/include/llvm/Debuginfod/Debuginfod.h +++ b/llvm/include/llvm/Debuginfod/Debuginfod.h @@ -97,7 +97,7 @@ Expected<std::string> getCachedOrDownloadArtifact( StringRef UniqueKey, StringRef UrlPath, StringRef CacheDirectoryPath, ArrayRef<StringRef> DebuginfodUrls, std::chrono::milliseconds Timeout); -class ThreadPoolInterface; +class ThreadPool; struct DebuginfodLogEntry { std::string Message; @@ -135,7 +135,7 @@ class DebuginfodCollection { // error. Expected<bool> updateIfStale(); DebuginfodLog &Log; - ThreadPoolInterface &Pool; + ThreadPool &Pool; Timer UpdateTimer; sys::Mutex UpdateMutex; @@ -145,7 +145,7 @@ class DebuginfodCollection { public: DebuginfodCollection(ArrayRef<StringRef> Paths, DebuginfodLog &Log, - ThreadPoolInterface &Pool, double MinInterval); + ThreadPool &Pool, double MinInterval); Error update(); Error updateForever(std::chrono::milliseconds Interval); Expected<std::string> findDebugBinaryPath(object::BuildIDRef); diff --git a/llvm/include/llvm/Support/BalancedPartitioning.h b/llvm/include/llvm/Support/BalancedPartitioning.h index 9738e742f7f1e96..a8464ac0fe60e58 100644 --- a/llvm/include/llvm/Support/BalancedPartitioning.h +++ b/llvm/include/llvm/Support/BalancedPartitioning.h @@ -50,7 +50,7 @@ namespace llvm { -class ThreadPoolInterface; +class ThreadPool; /// A function with a set of utility nodes where it is beneficial to order two /// functions close together if they have similar utility nodes class BPFunctionNode { @@ -115,7 +115,7 @@ class BalancedPartitioning { /// threads, so we need to track how many active threads that could spawn more /// threads. struct BPThreadPool { - ThreadPoolInterface &TheThreadPool; + ThreadPool &TheThreadPool; std::mutex mtx; std::condition_variable cv; /// The number of threads that could spawn more threads @@ -128,8 +128,7 @@ class BalancedPartitioning { /// acceptable for other threads to add more tasks while blocking on this /// call. void wait(); - BPThreadPool(ThreadPoolInterface &TheThreadPool) - : TheThreadPool(TheThreadPool) {} + BPThreadPool(ThreadPool &TheThreadPool) : TheThreadPool(TheThreadPool) {} }; /// Run a recursive bisection of a given list of FunctionNodes diff --git a/llvm/include/llvm/Support/ThreadPool.h b/llvm/include/llvm/Support/ThreadPool.h index 93f02729f047aa0..736c88964ca12ef 100644 --- a/llvm/include/llvm/Support/ThreadPool.h +++ b/llvm/include/llvm/Support/ThreadPool.h @@ -46,7 +46,7 @@ class ThreadPoolTaskGroup; /// available threads are used up by tasks waiting for a task that has no thread /// left to run on (this includes waiting on the returned future). It should be /// generally safe to wait() for a group as long as groups do not form a cycle. -class ThreadPoolInterface { +class ThreadPool { /// The actual method to enqueue a task to be defined by the concrete /// implementation. virtual void asyncEnqueue(std::function<void()> Task, @@ -55,7 +55,7 @@ class ThreadPoolInterface { public: /// Destroying the pool will drain the pending tasks and wait. The current /// thread may participate in the execution of the pending tasks. - virtual ~ThreadPoolInterface(); + virtual ~ThreadPool(); /// Blocking wait for all the threads to complete and the queue to be empty. /// It is an error to try to add new tasks while blocking on this call. @@ -121,7 +121,7 @@ class ThreadPoolInterface { /// /// The pool keeps a vector of threads alive, waiting on a condition variable /// for some work to become available. -class StdThreadPool : public ThreadPoolInterface { +class StdThreadPool : public ThreadPool { public: /// Construct a pool using the hardware strategy \p S for mapping hardware /// execution resources (threads, cores, CPUs) @@ -212,11 +212,10 @@ class StdThreadPool : public ThreadPoolInterface { /// Maximum number of threads to potentially grow this pool to. const unsigned MaxThreadCount; }; - -#endif // LLVM_ENABLE_THREADS Disabled +#endif // LLVM_ENABLE_THREADS /// A non-threaded implementation. -class SingleThreadExecutor : public ThreadPoolInterface { +class SingleThreadExecutor : public ThreadPool { public: /// Construct a non-threaded pool, ignoring using the hardware strategy. SingleThreadExecutor(ThreadPoolStrategy ignored = {}); @@ -253,9 +252,9 @@ class SingleThreadExecutor : public ThreadPoolInterface { }; #if LLVM_ENABLE_THREADS -using ThreadPool = StdThreadPool; +using DefaultThreadPool = StdThreadPool; #else -using ThreadPool = SingleThreadExecutor; +using DefaultThreadPool = SingleThreadExecutor; #endif /// A group of tasks to be run on a thread pool. Thread pool tasks in different @@ -265,7 +264,7 @@ using ThreadPool = SingleThreadExecutor; class ThreadPoolTaskGroup { public: /// The ThreadPool argument is the thread pool to forward calls to. - ThreadPoolTaskGroup(ThreadPoolInterface &Pool) : Pool(Pool) {} + ThreadPoolTaskGroup(ThreadPool &Pool) : Pool(Pool) {} /// Blocking destructor: will wait for all the tasks in the group to complete /// by calling ThreadPool::wait(). @@ -282,7 +281,7 @@ class ThreadPoolTaskGroup { void wait() { Pool.wait(*this); } private: - ThreadPoolInterface &Pool; + ThreadPool &Pool; }; } // namespace llvm diff --git a/llvm/lib/CodeGen/ParallelCG.cpp b/llvm/lib/CodeGen/ParallelCG.cpp index 43b23368ead2706..ceb64b2badab566 100644 --- a/llvm/lib/CodeGen/ParallelCG.cpp +++ b/llvm/lib/CodeGen/ParallelCG.cpp @@ -52,7 +52,7 @@ void llvm::splitCodeGen( // Create ThreadPool in nested scope so that threads will be joined // on destruction. { - ThreadPool CodegenThreadPool(hardware_concurrency(OSs.size())); + DefaultThreadPool CodegenThreadPool(hardware_concurrency(OSs.size())); int ThreadCount = 0; SplitModule( diff --git a/llvm/lib/DWARFLinker/Classic/DWARFLinker.cpp b/llvm/lib/DWARFLinker/Classic/DWARFLinker.cpp index 4f5a4e2ffc702ae..9b581a6c9ab7744 100644 --- a/llvm/lib/DWARFLinker/Classic/DWARFLinker.cpp +++ b/llvm/lib/DWARFLinker/Classic/DWARFLinker.cpp @@ -2935,7 +2935,7 @@ Error DWARFLinker::link() { } EmitLambda(); } else { - ThreadPool Pool(hardware_concurrency(2)); + DefaultThreadPool Pool(hardware_concurrency(2)); Pool.async(AnalyzeAll); Pool.async(CloneAll); Pool.wait(); diff --git a/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp b/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp index a052969e74c0f8d..49b08997eb9c1c1 100644 --- a/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp +++ b/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp @@ -192,7 +192,7 @@ Error DWARFLinkerImpl::link() { Context->InputDWARFFile.unload(); } } else { - ThreadPool Pool(llvm::parallel::strategy); + DefaultThreadPool Pool(llvm::parallel::strategy); for (std::unique_ptr<LinkContext> &Context : ObjectContexts) Pool.async([&]() { // Link object file. diff --git a/llvm/lib/DebugInfo/GSYM/DwarfTransformer.cpp b/llvm/lib/DebugInfo/GSYM/DwarfTransformer.cpp index 3a28cd412de9291..ff6b560d11726b6 100644 --- a/llvm/lib/DebugInfo/GSYM/DwarfTransformer.cpp +++ b/llvm/lib/DebugInfo/GSYM/DwarfTransformer.cpp @@ -601,7 +601,7 @@ Error DwarfTransformer::convert(uint32_t NumThreads, OutputAggregator &Out) { // Now parse all DIEs in case we have cross compile unit references in a // thread pool. - ThreadPool pool(hardware_concurrency(NumThreads)); + DefaultThreadPool pool(hardware_concurrency(NumThreads)); for (const auto &CU : DICtx.compile_units()) pool.async([&CU]() { CU->getUnitDIE(false /*CUDieOnly*/); }); pool.wait(); diff --git a/llvm/lib/Debuginfod/Debuginfod.cpp b/llvm/lib/Debuginfod/Debuginfod.cpp index 4c785117ae8ef77..1cf550721000eb3 100644 --- a/llvm/lib/Debuginfod/Debuginfod.cpp +++ b/llvm/lib/Debuginfod/Debuginfod.cpp @@ -348,8 +348,7 @@ DebuginfodLogEntry DebuginfodLog::pop() { } DebuginfodCollection::DebuginfodCollection(ArrayRef<StringRef> PathsRef, - DebuginfodLog &Log, - ThreadPoolInterface &Pool, + DebuginfodLog &Log, ThreadPool &Pool, double MinInterval) : Log(Log), Pool(Pool), MinInterval(MinInterval) { for (StringRef Path : PathsRef) diff --git a/llvm/lib/ExecutionEngine/Orc/LLJIT.cpp b/llvm/lib/ExecutionEngine/Orc/LLJIT.cpp index 833dcb9d5bf2e72..79adda5b7bc0341 100644 --- a/llvm/lib/ExecutionEngine/Orc/LLJIT.cpp +++ b/llvm/lib/ExecutionEngine/Orc/LLJIT.cpp @@ -972,8 +972,8 @@ LLJIT::LLJIT(LLJITBuilderState &S, Error &Err) if (S.NumCompileThreads > 0) { InitHelperTransformLayer->setCloneToNewContextOnEmit(true); - CompileThreads = - std::make_unique<ThreadPool>(hardware_concurrency(S.NumCompileThreads)); + CompileThreads = std::make_unique<DefaultThreadPool>( + hardware_concurrency(S.NumCompileThreads)); ES->setDispatchTask([this](std::unique_ptr<Task> T) { // FIXME: We should be able to use move-capture here, but ThreadPool's // AsyncTaskTys are std::functions rather than unique_functions diff --git a/llvm/lib/LTO/LTO.cpp b/llvm/lib/LTO/LTO.cpp index 34a49c8588b2f73..9c93ec70da77643 100644 --- a/llvm/lib/LTO/LTO.cpp +++ b/llvm/lib/LTO/LTO.cpp @@ -1409,7 +1409,7 @@ class lto::ThinBackendProc { namespace { class InProcessThinBackend : public ThinBackendProc { - ThreadPool BackendThreadPool; + DefaultThreadPool BackendThreadPool; AddStreamFn AddStream; FileCache Cache; std::set<GlobalValue::GUID> CfiFunctionDefs; diff --git a/llvm/lib/LTO/LTOBackend.cpp b/llvm/lib/LTO/LTOBackend.cpp index 6cfe67779b1a7de..71e8849dc3cc915 100644 --- a/llvm/lib/LTO/LTOBackend.cpp +++ b/llvm/lib/LTO/LTOBackend.cpp @@ -431,7 +431,7 @@ static void splitCodeGen(const Config &C, TargetMachine *TM, AddStreamFn AddStream, unsigned ParallelCodeGenParallelismLevel, Module &Mod, const ModuleSummaryIndex &CombinedIndex) { - ThreadPool CodegenThreadPool( + DefaultThreadPool CodegenThreadPool( heavyweight_hardware_concurrency(ParallelCodeGenParallelismLevel)); unsigned ThreadCount = 0; const Target *T = &TM->getTarget(); diff --git a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp index 8fd181846f0c4c1..8f517eb50dc76fc 100644 --- a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp +++ b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp @@ -980,7 +980,7 @@ void ThinLTOCodeGenerator::run() { if (CodeGenOnly) { // Perform only parallel codegen and return. - ThreadPool Pool; + DefaultThreadPool Pool; int count = 0; for (auto &Mod : Modules) { Pool.async([&](int count) { @@ -1126,7 +1126,7 @@ void ThinLTOCodeGenerator::run() { // Parallel optimizer + codegen { - ThreadPool Pool(heavyweight_hardware_concurrency(ThreadCount)); + DefaultThreadPool Pool(heavyweight_hardware_concurrency(ThreadCount)); for (auto IndexCount : ModulesOrdering) { auto &Mod = Modules[IndexCount]; Pool.async([&](int count) { diff --git a/llvm/lib/Support/BalancedPartitioning.cpp b/llvm/lib/Support/BalancedPartitioning.cpp index cb6ba61179941fd..f4254b50d26c914 100644 --- a/llvm/lib/Support/BalancedPartitioning.cpp +++ b/llvm/lib/Support/BalancedPartitioning.cpp @@ -82,7 +82,7 @@ void BalancedPartitioning::run(std::vector<BPFunctionNode> &Nodes) const { Nodes.size(), Config.SplitDepth, Config.IterationsPerSplit)); std::optional<BPThreadPool> TP; #if LLVM_ENABLE_THREADS - ThreadPool TheThreadPool; + DefaultThreadPool TheThreadPool; if (Config.TaskSplitDepth > 1) TP.emplace(TheThreadPool); #endif diff --git a/llvm/lib/Support/ThreadPool.cpp b/llvm/lib/Support/ThreadPool.cpp index 27e0f220ac4ed6f..9a26a2281c6cb16 100644 --- a/llvm/lib/Support/ThreadPool.cpp +++ b/llvm/lib/Support/ThreadPool.cpp @@ -20,7 +20,7 @@ using namespace llvm; -ThreadPoolInterface::~ThreadPoolInterface() = default; +ThreadPool::~ThreadPool() = default; // A note on thread groups: Tasks are by default in no group (represented // by nullptr ThreadPoolTaskGroup pointer in the Tasks queue) and functionality diff --git a/llvm/tools/dsymutil/dsymutil.cpp b/llvm/tools/dsymutil/dsymutil.cpp index b0e988c6f8e4b8c..25e281c415e75a9 100644 --- a/llvm/tools/dsymutil/dsymutil.cpp +++ b/llvm/tools/dsymutil/dsymutil.cpp @@ -734,7 +734,7 @@ int dsymutil_main(int argc, char **argv, const llvm::ToolContext &) { S.ThreadsRequested = DebugMapPtrsOrErr->size(); S.Limit = true; } - ThreadPool Threads(S); + DefaultThreadPool Threads(S); // If there is more than one link to execute, we need to generate // temporary files. diff --git a/llvm/tools/llvm-cov/CodeCoverage.cpp b/llvm/tools/llvm-cov/CodeCoverage.cpp index 049e89d1a230034..1e5bfbe5c3aade5 100644 --- a/llvm/tools/llvm-cov/CodeCoverage.cpp +++ b/llvm/tools/llvm-cov/CodeCoverage.cpp @@ -1217,7 +1217,7 @@ int CodeCoverageTool::doShow(int argc, const char **argv, ShowFilenames); } else { // In -output-dir mode, it's safe to use multiple threads to print files. - ThreadPool Pool(S); + DefaultThreadPool Pool(S); for (const std::string &SourceFile : SourceFiles) Pool.async(&CodeCoverageTool::writeSourceFileView, this, SourceFile, Coverage.get(), Printer.get(), ShowFilenames); diff --git a/llvm/tools/llvm-cov/CoverageExporterJson.cpp b/llvm/tools/llvm-cov/CoverageExporterJson.cpp index a424bbe06e0ecd2..9a8c7c94f06124d 100644 --- a/llvm/tools/llvm-cov/CoverageExporterJson.cpp +++ b/llvm/tools/llvm-cov/CoverageExporterJson.cpp @@ -277,7 +277,7 @@ json::Array renderFiles(const coverage::CoverageMapping &Coverage, S = heavyweight_hardware_concurrency(SourceFiles.size()); S.Limit = true; } - ThreadPool Pool(S); + DefaultThreadPool Pool(S); json::Array FileArray; std::mutex FileArrayMutex; diff --git a/llvm/tools/llvm-cov/CoverageReport.cpp b/llvm/tools/llvm-cov/CoverageReport.cpp index 8cc073e4def8fc9..49a35f2a943e6fb 100644 --- a/llvm/tools/llvm-cov/CoverageReport.cpp +++ b/llvm/tools/llvm-cov/CoverageReport.cpp @@ -465,7 +465,7 @@ std::vector<FileCoverageSummary> CoverageReport::prepareFileReports( S = heavyweight_hardware_concurrency(Files.size()); S.Limit = true; } - ThreadPool Pool(S); + DefaultThreadPool Pool(S); std::vector<FileCoverageSummary> FileReports; FileReports.reserve(Files.size()); @@ -580,7 +580,7 @@ Expected<FileCoverageSummary> DirectoryCoverageReport::prepareDirectoryReports( PoolS = heavyweight_hardware_concurrency(Files.size()); PoolS.Limit = true; } - ThreadPool Pool(PoolS); + DefaultThreadPool Pool(PoolS); TPool = &Pool; LCPStack = {RootLCP}; diff --git a/llvm/tools/llvm-cov/CoverageReport.h b/llvm/tools/llvm-cov/CoverageReport.h index b25ed5e35f9a77d..60f751ca9675287 100644 --- a/llvm/tools/llvm-cov/CoverageReport.h +++ b/llvm/tools/llvm-cov/CoverageReport.h @@ -20,7 +20,7 @@ namespace llvm { -class ThreadPoolInterface; +class ThreadPool; /// Displays the code coverage report. class CoverageReport { @@ -104,7 +104,7 @@ class DirectoryCoverageReport { /// For calling CoverageReport::prepareSingleFileReport asynchronously /// in prepareSubDirectoryReports(). It's not intended to be modified by /// generateSubDirectoryReport(). - ThreadPoolInterface *TPool; + ThreadPool *TPool; /// One report level may correspond to multiple directory levels as we omit /// directories which have only one subentry. So we use this Stack to track diff --git a/llvm/tools/llvm-debuginfod/llvm-debuginfod.cpp b/llvm/tools/llvm-debuginfod/llvm-debuginfod.cpp index 9d347dbd68f3956..44d656148a4e2cd 100644 --- a/llvm/tools/llvm-debuginfod/llvm-debuginfod.cpp +++ b/llvm/tools/llvm-debuginfod/llvm-debuginfod.cpp @@ -127,7 +127,7 @@ int llvm_debuginfod_main(int argc, char **argv, const llvm::ToolContext &) { for (const std::string &Path : ScanPaths) Paths.push_back(Path); - ThreadPool Pool(hardware_concurrency(MaxConcurrency)); + DefaultThreadPool Pool(hardware_concurrency(MaxConcurrency)); DebuginfodLog Log; DebuginfodCollection Collection(Paths, Log, Pool, MinInterval); DebuginfodServer Server(Log, Collection); diff --git a/llvm/tools/llvm-profdata/llvm-profdata.cpp b/llvm/tools/llvm-profdata/llvm-profdata.cpp index 577a8825fcaa7d8..8400b0769944cfd 100644 --- a/llvm/tools/llvm-profdata/llvm-profdata.cpp +++ b/llvm/tools/llvm-profdata/llvm-profdata.cpp @@ -898,7 +898,7 @@ static void mergeInstrProfile(const WeightedFileVector &Inputs, loadInput(Input, Remapper, Correlator.get(), ProfiledBinary, Contexts[0].get()); } else { - ThreadPool Pool(hardware_concurrency(NumThreads)); + DefaultThreadPool Pool(hardware_concurrency(NumThreads)); // Load the inputs in parallel (N/NumThreads serial steps). unsigned Ctx = 0; diff --git a/llvm/tools/llvm-reduce/deltas/Delta.cpp b/llvm/tools/llvm-reduce/deltas/Delta.cpp index 62dfd62a4d5a5fb..7a86668162456b1 100644 --- a/llvm/tools/llvm-reduce/deltas/Delta.cpp +++ b/llvm/tools/llvm-reduce/deltas/Delta.cpp @@ -222,7 +222,7 @@ void llvm::runDeltaPass(TestRunner &Test, ReductionFunc ExtractChunksFromModule, std::unique_ptr<ThreadPool> ChunkThreadPoolPtr; if (NumJobs > 1) ChunkThreadPoolPtr = - std::make_unique<ThreadPool>(hardware_concurrency(NumJobs)); + std::make_unique<DefaultThreadPool>(hardware_concurrency(NumJobs)); bool FoundAtLeastOneNewUninterestingChunkWithCurrentGranularity; do { diff --git a/llvm/unittests/ADT/LazyAtomicPointerTest.cpp b/llvm/unittests/ADT/LazyAtomicPointerTest.cpp index efead0bdf0a31b6..355822565426848 100644 --- a/llvm/unittests/ADT/LazyAtomicPointerTest.cpp +++ b/llvm/unittests/ADT/LazyAtomicPointerTest.cpp @@ -18,7 +18,7 @@ namespace { TEST(LazyAtomicPointer, loadOrGenerate) { int Value = 0; LazyAtomicPointer<int> Ptr; - ThreadPool Threads; + DefaultThreadPool Threads; for (unsigned I = 0; I < 4; ++I) Threads.async([&]() { Ptr.loadOrGenerate([&]() { @@ -38,7 +38,7 @@ TEST(LazyAtomicPointer, loadOrGenerate) { TEST(LazyAtomicPointer, BusyState) { int Value = 0; LazyAtomicPointer<int> Ptr; - ThreadPool Threads; + DefaultThreadPool Threads; std::mutex BusyLock, EndLock; std::condition_variable Busy, End; diff --git a/llvm/unittests/Debuginfod/HTTPServerTests.cpp b/llvm/unittests/Debuginfod/HTTPServerTests.cpp index b0af2f850576d86..cd1d5f2d9fc7003 100644 --- a/llvm/unittests/Debuginfod/HTTPServerTests.cpp +++ b/llvm/unittests/Debuginfod/HTTPServerTests.cpp @@ -92,7 +92,7 @@ TEST_F(HTTPClientServerTest, Hello) { Expected<unsigned> PortOrErr = Server.bind(); EXPECT_THAT_EXPECTED(PortOrErr, Succeeded()); unsigned Port = *PortOrErr; - ThreadPool Pool(hardware_concurrency(1)); + DefaultThreadPool Pool(hardware_concurrency(1)); Pool.async([&]() { EXPECT_THAT_ERROR(Server.listen(), Succeeded()); }); std::string Url = "http://localhost:" + utostr(Port); HTTPRequest Request(Url); @@ -116,7 +116,7 @@ TEST_F(HTTPClientServerTest, LambdaHandlerHello) { Expected<unsigned> PortOrErr = Server.bind(); EXPECT_THAT_EXPECTED(PortOrErr, Succeeded()); unsigned Port = *PortOrErr; - ThreadPool Pool(hardware_concurrency(1)); + DefaultThreadPool Pool(hardware_concurrency(1)); Pool.async([&]() { EXPECT_THAT_ERROR(Server.listen(), Succeeded()); }); std::string Url = "http://localhost:" + utostr(Port); HTTPRequest Request(Url); @@ -135,7 +135,7 @@ TEST_F(HTTPClientServerTest, StreamingHello) { Expected<unsigned> PortOrErr = Server.bind(); EXPECT_THAT_EXPECTED(PortOrErr, Succeeded()); unsigned Port = *PortOrErr; - ThreadPool Pool(hardware_concurrency(1)); + DefaultThreadPool Pool(hardware_concurrency(1)); Pool.async([&]() { EXPECT_THAT_ERROR(Server.listen(), Succeeded()); }); std::string Url = "http://localhost:" + utostr(Port); HTTPRequest Request(Url); @@ -167,7 +167,7 @@ TEST_F(HTTPClientServerTest, StreamingFileResponse) { Expected<unsigned> PortOrErr = Server.bind(); EXPECT_THAT_EXPECTED(PortOrErr, Succeeded()); unsigned Port = *PortOrErr; - ThreadPool Pool(hardware_concurrency(1)); + DefaultThreadPool Pool(hardware_concurrency(1)); Pool.async([&]() { EXPECT_THAT_ERROR(Server.listen(), Succeeded()); }); std::string Url = "http://localhost:" + utostr(Port); HTTPRequest Request(Url); @@ -203,7 +203,7 @@ TEST_F(HTTPClientServerTest, StreamingMissingFileResponse) { Expected<unsigned> PortOrErr = Server.bind(); EXPECT_THAT_EXPECTED(PortOrErr, Succeeded()); unsigned Port = *PortOrErr; - ThreadPool Pool(hardware_concurrency(1)); + DefaultThreadPool Pool(hardware_concurrency(1)); Pool.async([&]() { EXPECT_THAT_ERROR(Server.listen(), Succeeded()); }); std::string Url = "http://localhost:" + utostr(Port); HTTPRequest Request(Url); @@ -220,7 +220,7 @@ TEST_F(HTTPClientServerTest, ClientTimeout) { Expected<unsigned> PortOrErr = Server.bind(); EXPECT_THAT_EXPECTED(PortOrErr, Succeeded()); unsigned Port = *PortOrErr; - ThreadPool Pool(hardware_concurrency(1)); + DefaultThreadPool Pool(hardware_concurrency(1)); Pool.async([&]() { EXPECT_THAT_ERROR(Server.listen(), Succeeded()); }); std::string Url = "http://localhost:" + utostr(Port); HTTPClient Client; @@ -257,7 +257,7 @@ TEST_F(HTTPClientServerTest, PathMatching) { Expected<unsigned> PortOrErr = Server.bind(); EXPECT_THAT_EXPECTED(PortOrErr, Succeeded()); unsigned Port = *PortOrErr; - ThreadPool Pool(hardware_concurrency(1)); + DefaultThreadPool Pool(hardware_concurrency(1)); Pool.async([&]() { EXPECT_THAT_ERROR(Server.listen(), Succeeded()); }); std::string Url = "http://localhost:" + utostr(Port) + "/abc/1/2"; HTTPRequest Request(Url); @@ -289,7 +289,7 @@ TEST_F(HTTPClientServerTest, FirstPathMatched) { Expected<unsigned> PortOrErr = Server.bind(); EXPECT_THAT_EXPECTED(PortOrErr, Succeeded()); unsigned Port = *PortOrErr; - ThreadPool Pool(hardware_concurrency(1)); + DefaultThreadPool Pool(hardware_concurrency(1)); Pool.async([&]() { EXPECT_THAT_ERROR(Server.listen(), Succeeded()); }); std::string Url = "http://localhost:" + utostr(Port) + "/abc/1/2"; HTTPRequest Request(Url); diff --git a/llvm/unittests/Support/ParallelTest.cpp b/llvm/unittests/Support/ParallelTest.cpp index 53ef9fa25e82666..91250f01a3c117e 100644 --- a/llvm/unittests/Support/ParallelTest.cpp +++ b/llvm/unittests/Support/ParallelTest.cpp @@ -160,7 +160,7 @@ TEST(Parallel, ParallelNestedTaskGroup) { }); }; - ThreadPool Pool; + DefaultThreadPool Pool; Pool.async(Fn); Pool.async(Fn); diff --git a/llvm/unittests/Support/ThreadPool.cpp b/llvm/unittests/Support/ThreadPool.cpp index 1da8e056019d8da..d74c625d122950e 100644 --- a/llvm/unittests/Support/ThreadPool.cpp +++ b/llvm/unittests/Support/ThreadPool.cpp @@ -140,7 +140,7 @@ TYPED_TEST(ThreadPoolTest, AsyncBarrier) { std::atomic_int checked_in{0}; - TypeParam Pool; + DefaultThreadPool Pool; for (size_t i = 0; i < 5; ++i) { Pool.async([this, &checked_in] { this->waitForMainThread(); @@ -160,7 +160,7 @@ TYPED_TEST(ThreadPoolTest, AsyncBarrierArgs) { // Test that async works with a function requiring multiple parameters. std::atomic_int checked_in{0}; - ThreadPool Pool; + DefaultThreadPool Pool; for (size_t i = 0; i < 5; ++i) { Pool.async(TestFunc, std::ref(checked_in), i); } @@ -170,7 +170,7 @@ TYPED_TEST(ThreadPoolTest, AsyncBarrierArgs) { TYPED_TEST(ThreadPoolTest, Async) { CHECK_UNSUPPORTED(); - ThreadPool Pool; + DefaultThreadPool Pool; std::atomic_int i{0}; Pool.async([this, &i] { this->waitForMainThread(); @@ -185,7 +185,7 @@ TYPED_TEST(ThreadPoolTest, Async) { TYPED_TEST(ThreadPoolTest, GetFuture) { CHECK_UNSUPPORTED(); - ThreadPool Pool(hardware_concurrency(2)); + DefaultThreadPool Pool(hardware_concurrency(2)); std::atomic_int i{0}; Pool.async([this, &i] { this->waitForMainThread(); @@ -201,7 +201,7 @@ TYPED_TEST(ThreadPoolTest, GetFuture) { TYPED_TEST(ThreadPoolTest, GetFutureWithResult) { CHECK_UNSUPPORTED(); - ThreadPool Pool(hardware_concurrency(2)); + DefaultThreadPool Pool(hardware_concurrency(2)); auto F1 = Pool.async([] { return 1; }); auto F2 = Pool.async([] { return 2; }); @@ -213,7 +213,7 @@ TYPED_TEST(ThreadPoolTest, GetFutureWithResult) { TYPED_TEST(ThreadPoolTest, GetFutureWithResultAndArgs) { CHECK_UNSUPPORTED(); - ThreadPool Pool(hardware_concurrency(2)); + DefaultThreadPool Pool(hardware_concurrency(2)); auto Fn = [](int x) { return x; }; auto F1 = Pool.async(Fn, 1); auto F2 = Pool.async(Fn, 2); @@ -229,7 +229,7 @@ TYPED_TEST(ThreadPoolTest, PoolDestruction) { // Test that we are waiting on destruction std::atomic_int checked_in{0}; { - ThreadPool Pool; + DefaultThreadPool Pool; for (size_t i = 0; i < 5; ++i) { Pool.async([this, &checked_in] { this->waitForMainThread(); @@ -250,7 +250,7 @@ TYPED_TEST(ThreadPoolTest, Groups) { ThreadPoolStrategy S = hardware_concurrency(2); if (S.compute_thread_count() < 2) GTEST_SKIP(); - ThreadPool Pool(S); + DefaultThreadPool Pool(S); typename TestFixture::PhaseResetHelper Helper(this); ThreadPoolTaskGroup Group1(Pool); ThreadPoolTaskGroup Group2(Pool); @@ -288,7 +288,7 @@ TYPED_TEST(ThreadPoolTest, Groups) { // Check recursive tasks. TYPED_TEST(ThreadPoolTest, RecursiveGroups) { CHECK_UNSUPPORTED(); - ThreadPool Pool; + DefaultThreadPool Pool; ThreadPoolTaskGroup Group(Pool); std::atomic_int checked_in1{0}; @@ -323,7 +323,7 @@ TYPED_TEST(ThreadPoolTest, RecursiveWaitDeadlock) { ThreadPoolStrategy S = hardware_concurrency(2); if (S.compute_thread_count() < 2) GTEST_SKIP(); - ThreadPool Pool(S); + DefaultThreadPool Pool(S); typename TestFixture::PhaseResetHelper Helper(this); ThreadPoolTaskGroup Group(Pool); @@ -378,7 +378,7 @@ ThreadPoolTest<ThreadPoolImpl>::RunOnAllSockets(ThreadPoolStrategy S) { std::mutex AllThreadsLock; unsigned Active = 0; - ThreadPool Pool(S); + DefaultThreadPool Pool(S); for (size_t I = 0; I < S.compute_thread_count(); ++I) { Pool.async([&] { { diff --git a/llvm/unittests/Support/ThreadSafeAllocatorTest.cpp b/llvm/unittests/Support/ThreadSafeAllocatorTest.cpp index d9a85b435ebdb7e..b3d9430fc0f306f 100644 --- a/llvm/unittests/Support/ThreadSafeAllocatorTest.cpp +++ b/llvm/unittests/Support/ThreadSafeAllocatorTest.cpp @@ -77,7 +77,7 @@ TEST(ThreadSafeAllocatorTest, AllocWait) { // Get the allocation from the allocator first since this requires a lock. Alloc.applyLocked( [&](MockAllocator &Alloc) { C = &Alloc.getAllocCondition(); }); - ThreadPool Threads; + DefaultThreadPool Threads; // First allocation of 1 byte. Threads.async([&Alloc]() { char *P = (char *)Alloc.Allocate(1, alignof(char)); @@ -104,7 +104,7 @@ TEST(ThreadSafeAllocatorTest, AllocWait) { TEST(ThreadSafeAllocatorTest, AllocWithAlign) { ThreadSafeAllocator<BumpPtrAllocator> Alloc; - ThreadPool Threads; + DefaultThreadPool Threads; for (unsigned Index = 1; Index < 100; ++Index) Threads.async( @@ -123,7 +123,7 @@ TEST(ThreadSafeAllocatorTest, AllocWithAlign) { TEST(ThreadSafeAllocatorTest, SpecificBumpPtrAllocator) { ThreadSafeAllocator<SpecificBumpPtrAllocator<int>> Alloc; - ThreadPool Threads; + DefaultThreadPool Threads; for (unsigned Index = 1; Index < 100; ++Index) Threads.async( diff --git a/mlir/include/mlir/CAPI/Support.h b/mlir/include/mlir/CAPI/Support.h index 622745256111e1a..82aa05185858e34 100644 --- a/mlir/include/mlir/CAPI/Support.h +++ b/mlir/include/mlir/CAPI/Support.h @@ -22,7 +22,7 @@ #include "llvm/ADT/StringRef.h" namespace llvm { -class ThreadPoolInterface; +class ThreadPool; } // namespace llvm /// Converts a StringRef into its MLIR C API equivalent. @@ -45,7 +45,7 @@ inline mlir::LogicalResult unwrap(MlirLogicalResult res) { return mlir::success(mlirLogicalResultIsSuccess(res)); } -DEFINE_C_API_PTR_METHODS(MlirLlvmThreadPool, llvm::ThreadPoolInterface) +DEFINE_C_API_PTR_METHODS(MlirLlvmThreadPool, llvm::ThreadPool) DEFINE_C_API_METHODS(MlirTypeID, mlir::TypeID) DEFINE_C_API_PTR_METHODS(MlirTypeIDAllocator, mlir::TypeIDAllocator) diff --git a/mlir/include/mlir/IR/MLIRContext.h b/mlir/include/mlir/IR/MLIRContext.h index 2ad35d8f78ee359..d9e140bd75f726c 100644 --- a/mlir/include/mlir/IR/MLIRContext.h +++ b/mlir/include/mlir/IR/MLIRContext.h @@ -17,7 +17,7 @@ #include <vector> namespace llvm { -class ThreadPoolInterface; +class ThreadPool; } // namespace llvm namespace mlir { @@ -162,7 +162,7 @@ class MLIRContext { /// The command line debugging flag `--mlir-disable-threading` will still /// prevent threading from being enabled and threading won't be enabled after /// this call in this case. - void setThreadPool(llvm::ThreadPoolInterface &pool); + void setThreadPool(llvm::ThreadPool &pool); /// Return the number of threads used by the thread pool in this context. The /// number of computed hardware threads can change over the lifetime of a @@ -175,7 +175,7 @@ class MLIRContext { /// multithreading be enabled within the context, and should generally not be /// used directly. Users should instead prefer the threading utilities within /// Threading.h. - llvm::ThreadPoolInterface &getThreadPool(); + llvm::ThreadPool &getThreadPool(); /// Return true if we should attach the operation to diagnostics emitted via /// Operation::emit. diff --git a/mlir/include/mlir/IR/Threading.h b/mlir/include/mlir/IR/Threading.h index 3ceab6b3e883a52..0f71dc27cf391fa 100644 --- a/mlir/include/mlir/IR/Threading.h +++ b/mlir/include/mlir/IR/Threading.h @@ -66,7 +66,7 @@ LogicalResult failableParallelForEach(MLIRContext *context, IteratorT begin, }; // Otherwise, process the elements in parallel. - llvm::ThreadPoolInterface &threadPool = context->getThreadPool(); + llvm::ThreadPool &threadPool = context->getThreadPool(); llvm::ThreadPoolTaskGroup tasksGroup(threadPool); size_t numActions = std::min(numElements, threadPool.getMaxConcurrency()); for (unsigned i = 0; i < numActions; ++i) diff --git a/mlir/lib/CAPI/IR/Support.cpp b/mlir/lib/CAPI/IR/Support.cpp index 81c9fc771926403..3311131fc2bc836 100644 --- a/mlir/lib/CAPI/IR/Support.cpp +++ b/mlir/lib/CAPI/IR/Support.cpp @@ -25,7 +25,7 @@ bool mlirStringRefEqual(MlirStringRef string, MlirStringRef other) { // LLVM ThreadPool API. //===----------------------------------------------------------------------===// MlirLlvmThreadPool mlirLlvmThreadPoolCreate() { - return wrap(new llvm::ThreadPool()); + return wrap(new llvm::DefaultThreadPool()); } void mlirLlvmThreadPoolDestroy(MlirLlvmThreadPool threadPool) { diff --git a/mlir/lib/ExecutionEngine/AsyncRuntime.cpp b/mlir/lib/ExecutionEngine/AsyncRuntime.cpp index 189902969f8d2f4..d4e58b6909e71af 100644 --- a/mlir/lib/ExecutionEngine/AsyncRuntime.cpp +++ b/mlir/lib/ExecutionEngine/AsyncRuntime.cpp @@ -72,7 +72,7 @@ class AsyncRuntime { } std::atomic<int64_t> numRefCountedObjects; - llvm::ThreadPool threadPool; + llvm::DefaultThreadPool threadPool; }; // -------------------------------------------------------------------------- // diff --git a/mlir/lib/IR/MLIRContext.cpp b/mlir/lib/IR/MLIRContext.cpp index 92568bd311e3940..f68aea4e4783d5e 100644 --- a/mlir/lib/IR/MLIRContext.cpp +++ b/mlir/lib/IR/MLIRContext.cpp @@ -170,11 +170,11 @@ class MLIRContextImpl { /// It can't be nullptr when multi-threading is enabled. Otherwise if /// multi-threading is disabled, and the threadpool wasn't externally provided /// using `setThreadPool`, this will be nullptr. - llvm::ThreadPoolInterface *threadPool = nullptr; + llvm::ThreadPool *threadPool = nullptr; /// In case where the thread pool is owned by the context, this ensures /// destruction with the context. - std::unique_ptr<llvm::ThreadPoolInterface> ownedThreadPool; + std::unique_ptr<llvm::ThreadPool> ownedThreadPool; /// An allocator used for AbstractAttribute and AbstractType objects. llvm::BumpPtrAllocator abstractDialectSymbolAllocator; @@ -274,7 +274,7 @@ class MLIRContextImpl { MLIRContextImpl(bool threadingIsEnabled) : threadingIsEnabled(threadingIsEnabled) { if (threadingIsEnabled) { - ownedThreadPool = std::make_unique<llvm::ThreadPool>(); + ownedThreadPool = std::make_unique<llvm::DefaultThreadPool>(); threadPool = ownedThreadPool.get(); } } @@ -621,12 +621,12 @@ void MLIRContext::disableMultithreading(bool disable) { } else if (!impl->threadPool) { // The thread pool isn't externally provided. assert(!impl->ownedThreadPool); - impl->ownedThreadPool = std::make_unique<llvm::ThreadPool>(); + impl->ownedThreadPool = std::make_unique<llvm::DefaultThreadPool>(); impl->threadPool = impl->ownedThreadPool.get(); } } -void MLIRContext::setThreadPool(llvm::ThreadPoolInterface &pool) { +void MLIRContext::setThreadPool(llvm::ThreadPool &pool) { assert(!isMultithreadingEnabled() && "expected multi-threading to be disabled when setting a ThreadPool"); impl->threadPool = &pool; @@ -644,7 +644,7 @@ unsigned MLIRContext::getNumThreads() { return 1; } -llvm::ThreadPoolInterface &MLIRContext::getThreadPool() { +llvm::ThreadPool &MLIRContext::getThreadPool() { assert(isMultithreadingEnabled() && "expected multi-threading to be enabled within the context"); assert(impl->threadPool && diff --git a/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp b/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp index b62557153b41677..2755a949fb947c2 100644 --- a/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp +++ b/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp @@ -431,7 +431,7 @@ static LogicalResult processBuffer(raw_ostream &os, std::unique_ptr<MemoryBuffer> ownedBuffer, const MlirOptMainConfig &config, DialectRegistry ®istry, - llvm::ThreadPoolInterface *threadPool) { + llvm::ThreadPool *threadPool) { // Tell sourceMgr about this buffer, which is what the parser will pick up. auto sourceMgr = std::make_shared<SourceMgr>(); sourceMgr->AddNewSourceBuffer(std::move(ownedBuffer), SMLoc()); @@ -517,7 +517,7 @@ LogicalResult mlir::MlirOptMain(llvm::raw_ostream &outputStream, // up into small pieces and checks each independently. // We use an explicit threadpool to avoid creating and joining/destroying // threads for each of the split. - ThreadPoolInterface *threadPool = nullptr; + ThreadPool *threadPool = nullptr; // Create a temporary context for the sake of checking if // --mlir-disable-threading was passed on the command line. _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits