gallivm: Override some of the default target options.

In particular:
- enable LLVM <-> GDB integration for JIT code
- disable frame-pointer elimination on debug/profile builds
- enable fast-math.
This commit is contained in:
José Fonseca 2010-06-13 13:13:11 +01:00
parent 21a9ef12bf
commit 4d2407699b
2 changed files with 31 additions and 0 deletions

View File

@ -78,6 +78,9 @@ enum LLVM_CodeGenOpt_Level {
extern void
lp_register_oprofile_jit_event_listener(LLVMExecutionEngineRef EE);
extern void
lp_set_target_options(void);
void
lp_build_init(void)
@ -86,6 +89,8 @@ lp_build_init(void)
gallivm_debug = debug_get_flags_option("GALLIVM_DEBUG", lp_bld_debug_flags, 0 );
#endif
lp_set_target_options();
LLVMInitializeNativeTarget();
LLVMLinkInJIT();

View File

@ -36,6 +36,7 @@
#include <llvm-c/Core.h>
#include <llvm-c/ExecutionEngine.h>
#include <llvm/Target/TargetOptions.h>
#include <llvm/ExecutionEngine/ExecutionEngine.h>
#include <llvm/ExecutionEngine/JITEventListener.h>
@ -119,3 +120,28 @@ lp_register_oprofile_jit_event_listener(LLVMExecutionEngineRef EE)
{
llvm::unwrap(EE)->RegisterJITEventListener(llvm::createOProfileJITEventListener());
}
extern "C" void
lp_set_target_options(void)
{
#if defined(DEBUG)
#if HAVE_LLVM >= 0x0207
llvm::JITEmitDebugInfo = true;
#endif
#endif
#if defined(DEBUG) || defined(PROFILE)
llvm::NoFramePointerElim = true;
#if HAVE_LLVM >= 0x0207
llvm::NoFramePointerElimNonLeaf = true;
#endif
#endif
llvm::NoExcessFPPrecision = false;
/* XXX: Investigate this */
#if 0
llvm::UnsafeFPMath = true;
#endif
}