Commit 55948247 authored by Jose Fonseca's avatar Jose Fonseca

gallivm: Register the JIT engine with oprofile on debug/profile builds.

parent ef817798
......@@ -75,6 +75,10 @@ enum LLVM_CodeGenOpt_Level {
};
extern void
lp_register_oprofile_jit_event_listener(LLVMExecutionEngineRef EE);
void
lp_build_init(void)
{
......@@ -109,6 +113,10 @@ lp_build_init(void)
LLVMDisposeMessage(error);
assert(0);
}
#if defined(DEBUG) || defined(PROFILE)
lp_register_oprofile_jit_event_listener(lp_build_engine);
#endif
}
if (!lp_build_target)
......
......@@ -34,7 +34,10 @@
#define __STDC_CONSTANT_MACROS
#endif
#include "llvm-c/Core.h"
#include <llvm-c/Core.h>
#include <llvm-c/ExecutionEngine.h>
#include <llvm/ExecutionEngine/ExecutionEngine.h>
#include <llvm/ExecutionEngine/JITEventListener.h>
#include "pipe/p_config.h"
#include "util/u_debug.h"
......@@ -98,3 +101,21 @@ lp_debug_dump_value(LLVMValueRef value)
#endif
/**
* Register the engine with oprofile.
*
* This allows to see the LLVM IR function names in oprofile output.
*
* To actually work LLVM needs to be built with the --with-oprofile configure
* option.
*
* Also a oprofile:oprofile user:group is necessary. Which is not created by
* default on some distributions.
*/
extern "C" void
lp_register_oprofile_jit_event_listener(LLVMExecutionEngineRef EE)
{
llvm::unwrap(EE)->RegisterJITEventListener(llvm::createOProfileJITEventListener());
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment