Mesa (master): gallivm: Fix build for LLVM 3.2

Mathias Fröhlich frohlich at kemper.freedesktop.org
Tue Sep 30 22:31:12 UTC 2014


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

Author: Mathias Fröhlich <Mathias.Froehlich at gmx.net>
Date:   Tue Sep 30 22:11:30 2014 +0200

gallivm: Fix build for LLVM 3.2

Do not rely on LLVMMCJITMemoryManagerRef being available.
The c binding to the memory manager objects only appeared
on llvm-3.4.
The change is based on an initial patch of Brian Paul.

Reviewed-by: Brian Paul <brianp at vmware.com>
Tested-by: Brian Paul <brianp at vmware.com>
Reviewed-by: Roland Scheidegger <sroland at vmware.com>
Signed-off-by: Mathias Froehlich <Mathias.Froehlich at web.de>

---

 src/gallium/auxiliary/gallivm/lp_bld.h        |    8 ++++++++
 src/gallium/auxiliary/gallivm/lp_bld_init.c   |    4 +---
 src/gallium/auxiliary/gallivm/lp_bld_misc.cpp |    9 +++++++++
 src/gallium/auxiliary/gallivm/lp_bld_misc.h   |    3 +++
 4 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld.h b/src/gallium/auxiliary/gallivm/lp_bld.h
index fcf4f16..a01c216 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld.h
@@ -58,6 +58,14 @@
 #endif
 
 
+#if HAVE_LLVM <= 0x0303
+/* We won't actually use LLVMMCJITMemoryManagerRef, just create a dummy
+ * typedef to simplify things elsewhere.
+ */
+typedef void *LLVMMCJITMemoryManagerRef;
+#endif
+
+
 /**
  * Redefine these LLVM entrypoints as invalid macros to make sure we
  * don't accidentally use them.  We need to use the functions which
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.c b/src/gallium/auxiliary/gallivm/lp_bld_init.c
index 4e4aecb..8d7a0b6 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_init.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_init.c
@@ -219,10 +219,8 @@ gallivm_free_code(struct gallivm_state *gallivm)
    assert(!gallivm->engine);
    lp_free_generated_code(gallivm->code);
    gallivm->code = NULL;
-#if HAVE_LLVM < 0x0306
-   LLVMDisposeMCJITMemoryManager(gallivm->memorymgr);
+   lp_free_memory_manager(gallivm->memorymgr);
    gallivm->memorymgr = NULL;
-#endif
 }
 
 
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
index c173ab6..9c2de2c 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
@@ -554,3 +554,12 @@ lp_get_default_memory_manager()
    return 0;
 #endif
 }
+
+extern "C"
+void
+lp_free_memory_manager(LLVMMCJITMemoryManagerRef memorymgr)
+{
+#if HAVE_LLVM < 0x0306
+   delete reinterpret_cast<llvm::JITMemoryManager*>(memorymgr);
+#endif
+}
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.h b/src/gallium/auxiliary/gallivm/lp_bld_misc.h
index 40d3e79..36923aa 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.h
@@ -65,6 +65,9 @@ lp_free_generated_code(struct lp_generated_code *code);
 extern LLVMMCJITMemoryManagerRef
 lp_get_default_memory_manager();
 
+extern void
+lp_free_memory_manager(LLVMMCJITMemoryManagerRef memorymgr);
+
 #ifdef __cplusplus
 }
 #endif




More information about the mesa-commit mailing list