diff options
author | Mathias Fröhlich <[email protected]> | 2014-09-30 22:11:30 +0200 |
---|---|---|
committer | Mathias Fröhlich <[email protected]> | 2014-10-01 00:29:31 +0200 |
commit | 6e7d36fd2c1185ae1b84b81b8630472ceb87356d (patch) | |
tree | 9189f13204e8e50b43c2db1dd5cae315cfa4fbce /src/gallium/auxiliary | |
parent | cc355f1c06063b6d3c0ba5377aee605c9c393488 (diff) |
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 <[email protected]>
Tested-by: Brian Paul <[email protected]>
Reviewed-by: Roland Scheidegger <[email protected]>
Signed-off-by: Mathias Froehlich <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary')
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld.h | 8 | ||||
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_init.c | 4 | ||||
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 9 | ||||
-rw-r--r-- | 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 fcf4f169b15..a01c216cfab 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 4e4aecb102c..8d7a0b65862 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 c173ab657b9..9c2de2ccbe6 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 40d3e797b4a..36923aa423f 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 |