aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/jit/llvm/llvmjit.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/backend/jit/llvm/llvmjit.c b/src/backend/jit/llvm/llvmjit.c
index 53ac8e4425b..bbb2360232f 100644
--- a/src/backend/jit/llvm/llvmjit.c
+++ b/src/backend/jit/llvm/llvmjit.c
@@ -527,13 +527,17 @@ llvm_compile_module(LLVMJitContext *context)
* faster instruction selection mechanism is used.
*/
INSTR_TIME_SET_CURRENT(starttime);
-#if LLVM_VERSION_MAJOR < 5
+#if LLVM_VERSION_MAJOR > 6
{
- orc_handle = LLVMOrcAddEagerlyCompiledIR(compile_orc, context->module,
- llvm_resolve_symbol, NULL);
- LLVMDisposeModule(context->module);
+ if (LLVMOrcAddEagerlyCompiledIR(compile_orc, &orc_handle, context->module,
+ llvm_resolve_symbol, NULL))
+ {
+ elog(ERROR, "failed to JIT module");
+ }
+
+ /* LLVMOrcAddEagerlyCompiledIR takes ownership of the module */
}
-#else
+#elif LLVM_VERSION_MAJOR > 4
{
LLVMSharedModuleRef smod;
@@ -545,6 +549,12 @@ llvm_compile_module(LLVMJitContext *context)
}
LLVMOrcDisposeSharedModuleRef(smod);
}
+#else /* LLVM 4.0 and 3.9 */
+ {
+ orc_handle = LLVMOrcAddEagerlyCompiledIR(compile_orc, context->module,
+ llvm_resolve_symbol, NULL);
+ LLVMDisposeModule(context->module);
+ }
#endif
INSTR_TIME_SET_CURRENT(endtime);
INSTR_TIME_ACCUM_DIFF(context->base.emission_counter,