gallivm: Fix build for LLVM 3.2
authorMathias Fröhlich <Mathias.Froehlich@gmx.net>
Tue, 30 Sep 2014 20:11:30 +0000 (22:11 +0200)
committerMathias Fröhlich <Mathias.Froehlich@gmx.net>
Tue, 30 Sep 2014 22:29:31 +0000 (00:29 +0200)
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@vmware.com>
Tested-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Signed-off-by: Mathias Froehlich <Mathias.Froehlich@web.de>
src/gallium/auxiliary/gallivm/lp_bld.h
src/gallium/auxiliary/gallivm/lp_bld_init.c
src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
src/gallium/auxiliary/gallivm/lp_bld_misc.h

index fcf4f169b153ee0a5868b5515c316d807b1f83b6..a01c216cfabdbc48e7789bf6f39575f8d27fd38d 100644 (file)
 #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
index 4e4aecb102cfac89e9b8fe175281d89a90e9311a..8d7a0b658627305073c4747e896fec91ec1b34d8 100644 (file)
@@ -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
 }
 
 
index c173ab657b95f67a699ef5746aaf5ba22a30fad9..9c2de2ccbe6fdc27eac89cc8ddefb2b54ab7749e 100644 (file)
@@ -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
+}
index 40d3e797b4a0caac3fd155e467be80be1ae40533..36923aa423f579ebcfba6057013b9bd47ba6f9ee 100644 (file)
@@ -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