diff --git a/lld/MachO/Writer.cpp b/lld/MachO/Writer.cpp --- a/lld/MachO/Writer.cpp +++ b/lld/MachO/Writer.cpp @@ -29,6 +29,7 @@ #include "llvm/Support/MathExtras.h" #include "llvm/Support/Parallel.h" #include "llvm/Support/Path.h" +#include "llvm/Support/ThreadPool.h" #include "llvm/Support/TimeProfiler.h" #include "llvm/Support/xxhash.h" @@ -64,6 +65,7 @@ template void run(); + ThreadPool writerThreadPool; std::unique_ptr &buffer; uint64_t addr = 0; uint64_t fileOff = 0; @@ -1147,8 +1149,8 @@ sortSegmentsAndSections(); createLoadCommands(); finalizeAddresses(); + writerThreadPool.async(writeMapFile); finalizeLinkEditSegment(); - writeMapFile(); writeOutputFile(); }