[lld] e976c45 - [lld-macho] Initialize separate time trace profiler for mapfile worker
Jez Ng via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 11 17:45:28 PST 2022
Author: Jez Ng
Date: 2022-01-11T17:45:18-08:00
New Revision: e976c457c5a376e688cbbdd5779bd439618dae38
URL: https://github.com/llvm/llvm-project/commit/e976c457c5a376e688cbbdd5779bd439618dae38
DIFF: https://github.com/llvm/llvm-project/commit/e976c457c5a376e688cbbdd5779bd439618dae38.diff
LOG: [lld-macho] Initialize separate time trace profiler for mapfile worker
After {D115416}, the "Write map file" event no longer shows up
in the time trace. Each time trace profiler instance is thread-local,
but we had neglected to initialize a separate instance for the mapfile
worker thread.
Reviewed By: keith
Differential Revision: https://reviews.llvm.org/D117069
Added:
Modified:
lld/MachO/Writer.cpp
lld/test/MachO/map-file.s
Removed:
################################################################################
diff --git a/lld/MachO/Writer.cpp b/lld/MachO/Writer.cpp
index b0ca5eeaa5ad2..c633dbb027726 100644
--- a/lld/MachO/Writer.cpp
+++ b/lld/MachO/Writer.cpp
@@ -1175,7 +1175,13 @@ template <class LP> void Writer::run() {
sortSegmentsAndSections();
createLoadCommands<LP>();
finalizeAddresses();
- threadPool.async(writeMapFile);
+ threadPool.async([&] {
+ if (LLVM_ENABLE_THREADS && config->timeTraceEnabled)
+ timeTraceProfilerInitialize(config->timeTraceGranularity, "writeMapFile");
+ writeMapFile();
+ if (LLVM_ENABLE_THREADS && config->timeTraceEnabled)
+ timeTraceProfilerFinishThread();
+ });
finalizeLinkEditSegment();
writeOutputFile();
}
diff --git a/lld/test/MachO/map-file.s b/lld/test/MachO/map-file.s
index 610ed9b91379a..d51818ec2019d 100644
--- a/lld/test/MachO/map-file.s
+++ b/lld/test/MachO/map-file.s
@@ -3,10 +3,11 @@
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/foo.s -o %t/foo.o
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/test.s -o %t/test.o
-# RUN: %lld -map %t/map %t/test.o %t/foo.o -o %t/test-map
+# RUN: %lld -map %t/map %t/test.o %t/foo.o --time-trace -o %t/test-map
# RUN: llvm-objdump --syms --section-headers %t/test-map > %t/objdump
# RUN: cat %t/objdump %t/map > %t/out
# RUN: FileCheck %s < %t/out
+# RUN: FileCheck %s --check-prefix=MAPFILE < %t/test-map.time-trace
#--- foo.s
.section __TEXT,obj
@@ -49,3 +50,5 @@ _main:
# CHECK-NEXT: 0x[[#NUMBER]] [ 1] _number
# CHECK-NEXT: 0x[[#MAIN]] [ 1] _main
# CHECK-NEXT: 0x[[#FOO]] [ 2] _foo
+
+# MAPFILE: "name":"Write map file"
More information about the llvm-commits
mailing list