Hi, On 2018-01-26 13:06:27 +0300, Konstantin Knizhnik wrote: > One more question: do you have any idea how to profile JITed code?
Yes ;). It depends a bit on what exactly you want to do. Is it sufficient to get time associated with the parent caller, or do you need instruction-level access. > There is no LLVMOrcRegisterPerf in LLVM 5, so jit_profiling_support option > does nothing. Right, it's a patch I'm trying to get into the next version of llvm. With that you get access to the shared object and everything. > And without it perf is not able to unwind stack trace for generated > code. You can work around that by using --call-graph lbr with a sufficiently new perf. That'll not know function names et al, but at least the parent will be associated correctly. > But you are compiling code using LLVMOrcAddEagerlyCompiledIR > and I find no way to pass no-omit-frame pointer option here. It shouldn't be too hard to open code support for it, encapsulated in a function: // Set function attribute "no-frame-pointer-elim" based on // NoFramePointerElim. for (auto &F : *Mod) { auto Attrs = F.getAttributes(); StringRef Value(options.NoFramePointerElim ? "true" : "false"); Attrs = Attrs.addAttribute(F.getContext(), AttributeList::FunctionIndex, "no-frame-pointer-elim", Value); F.setAttributes(Attrs); } that's all that option did for mcjit. Greetings, Andres Freund