Initialize LLVM time trace profiler on each code generation thread
In https://reviews.llvm.org/D71059 LLVM 11, the time trace profiler was extended to support multiple threads. `timeTraceProfilerInitialize` creates a thread local profiler instance. When a thread finishes `timeTraceProfilerFinishThread` moves a thread local instance into a global collection of instances. Finally when all codegen work is complete `timeTraceProfilerWrite` writes data from the current thread local instance and the instances in global collection of instances. Previously, the profiler was intialized on a single thread only. Since this thread performs no code generation on its own, the resulting profile was empty. Update LLVM codegen to initialize & finish time trace profiler on each code generation thread.
This commit is contained in:
parent
d22dd65835
commit
5a09e12135
6 changed files with 128 additions and 56 deletions
|
@ -75,6 +75,10 @@ extern "C" void LLVMTimeTraceProfilerInitialize() {
|
|||
/* ProcName */ "rustc");
|
||||
}
|
||||
|
||||
extern "C" void LLVMTimeTraceProfilerFinishThread() {
|
||||
timeTraceProfilerFinishThread();
|
||||
}
|
||||
|
||||
extern "C" void LLVMTimeTraceProfilerFinish(const char* FileName) {
|
||||
StringRef FN(FileName);
|
||||
std::error_code EC;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue