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
|
@ -1737,6 +1737,8 @@ extern "C" {
|
|||
|
||||
pub fn LLVMTimeTraceProfilerInitialize();
|
||||
|
||||
pub fn LLVMTimeTraceProfilerFinishThread();
|
||||
|
||||
pub fn LLVMTimeTraceProfilerFinish(FileName: *const c_char);
|
||||
|
||||
pub fn LLVMAddAnalysisPasses(T: &'a TargetMachine, PM: &PassManager<'a>);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue