Mesa (master): gallivm: Override some of the default target options.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Mon Jun 14 16:12:14 UTC 2010


Module: Mesa
Branch: master
Commit: 4d2407699ba043735b5fbd5c20fc5ccbff32c948
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4d2407699ba043735b5fbd5c20fc5ccbff32c948

Author: José Fonseca <jfonseca at vmware.com>
Date:   Sun Jun 13 13:13:11 2010 +0100

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.

---

 src/gallium/auxiliary/gallivm/lp_bld_init.c   |    5 ++++
 src/gallium/auxiliary/gallivm/lp_bld_misc.cpp |   26 +++++++++++++++++++++++++
 2 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.c b/src/gallium/auxiliary/gallivm/lp_bld_init.c
index 0a690ea..44cfdc4 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_init.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_init.c
@@ -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();
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
index f004c0a..87e9f00 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
@@ -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
+}




More information about the mesa-commit mailing list