aboutsummaryrefslogtreecommitdiff
path: root/src/backend/jit/llvm/llvmjit.c
diff options
context:
space:
mode:
authorThomas Munro <tmunro@postgresql.org>2024-01-25 15:23:04 +1300
committerThomas Munro <tmunro@postgresql.org>2024-01-25 15:42:34 +1300
commit820b5af73dcc6a5d0db6a98a62a6b859e5d107b6 (patch)
treecc46c2147142da3b000398e001ea2315ff3e298e /src/backend/jit/llvm/llvmjit.c
parent729439607ad210dbb446e31754e8627d7e3f7dda (diff)
downloadpostgresql-820b5af73dcc6a5d0db6a98a62a6b859e5d107b6.tar.gz
postgresql-820b5af73dcc6a5d0db6a98a62a6b859e5d107b6.zip
jit: Require at least LLVM 10.
Remove support for older LLVM versions. The default on common software distributions will be at least LLVM 10 when PostgreSQL 17 ships. Reviewed-by: Peter Eisentraut <peter@eisentraut.org> Discussion: https://postgr.es/m/CA%2BhUKGLhNs5geZaVNj2EJ79Dx9W8fyWUU3HxcpZy55sMGcY%3DiA%40mail.gmail.com
Diffstat (limited to 'src/backend/jit/llvm/llvmjit.c')
-rw-r--r--src/backend/jit/llvm/llvmjit.c57
1 files changed, 3 insertions, 54 deletions
diff --git a/src/backend/jit/llvm/llvmjit.c b/src/backend/jit/llvm/llvmjit.c
index 7e1d348e6b6..ec0fdd49324 100644
--- a/src/backend/jit/llvm/llvmjit.c
+++ b/src/backend/jit/llvm/llvmjit.c
@@ -34,10 +34,8 @@
#include <llvm-c/Transforms/IPO.h>
#include <llvm-c/Transforms/PassManagerBuilder.h>
#include <llvm-c/Transforms/Scalar.h>
-#if LLVM_VERSION_MAJOR > 6
#include <llvm-c/Transforms/Utils.h>
#endif
-#endif
#include "jit/llvmjit.h"
#include "jit/llvmjit_emit.h"
@@ -381,10 +379,7 @@ llvm_expand_funcname(struct LLVMJitContext *context, const char *basename)
void *
llvm_get_function(LLVMJitContext *context, const char *funcname)
{
-#if LLVM_VERSION_MAJOR > 11 || \
- defined(HAVE_DECL_LLVMORCGETSYMBOLADDRESSIN) && HAVE_DECL_LLVMORCGETSYMBOLADDRESSIN
ListCell *lc;
-#endif
llvm_assert_in_fatal_section();
@@ -432,7 +427,7 @@ llvm_get_function(LLVMJitContext *context, const char *funcname)
if (addr)
return (void *) (uintptr_t) addr;
}
-#elif defined(HAVE_DECL_LLVMORCGETSYMBOLADDRESSIN) && HAVE_DECL_LLVMORCGETSYMBOLADDRESSIN
+#else
foreach(lc, context->handles)
{
LLVMOrcTargetAddress addr;
@@ -444,28 +439,6 @@ llvm_get_function(LLVMJitContext *context, const char *funcname)
if (addr)
return (void *) (uintptr_t) addr;
}
-#elif LLVM_VERSION_MAJOR < 5
- {
- LLVMOrcTargetAddress addr;
-
- if ((addr = LLVMOrcGetSymbolAddress(llvm_opt0_orc, funcname)))
- return (void *) (uintptr_t) addr;
- if ((addr = LLVMOrcGetSymbolAddress(llvm_opt3_orc, funcname)))
- return (void *) (uintptr_t) addr;
- }
-#else
- {
- LLVMOrcTargetAddress addr;
-
- if (LLVMOrcGetSymbolAddress(llvm_opt0_orc, &addr, funcname))
- elog(ERROR, "failed to look up symbol \"%s\"", funcname);
- if (addr)
- return (void *) (uintptr_t) addr;
- if (LLVMOrcGetSymbolAddress(llvm_opt3_orc, &addr, funcname))
- elog(ERROR, "failed to look up symbol \"%s\"", funcname);
- if (addr)
- return (void *) (uintptr_t) addr;
- }
#endif
elog(ERROR, "failed to JIT: %s", funcname);
@@ -553,12 +526,8 @@ llvm_copy_attributes_at_index(LLVMValueRef v_from, LLVMValueRef v_to, uint32 ind
int num_attributes;
LLVMAttributeRef *attrs;
- num_attributes = LLVMGetAttributeCountAtIndexPG(v_from, index);
+ num_attributes = LLVMGetAttributeCountAtIndex(v_from, index);
- /*
- * Not just for efficiency: LLVM <= 3.9 crashes when
- * LLVMGetAttributesAtIndex() is called for an index with 0 attributes.
- */
if (num_attributes == 0)
return;
@@ -852,7 +821,7 @@ llvm_compile_module(LLVMJitContext *context)
/* LLVMOrcLLJITAddLLVMIRModuleWithRT takes ownership of the module */
}
-#elif LLVM_VERSION_MAJOR > 6
+#else
{
handle->stack = compile_orc;
if (LLVMOrcAddEagerlyCompiledIR(compile_orc, &handle->orc_handle, context->module,
@@ -861,26 +830,6 @@ llvm_compile_module(LLVMJitContext *context)
/* LLVMOrcAddEagerlyCompiledIR takes ownership of the module */
}
-#elif LLVM_VERSION_MAJOR > 4
- {
- LLVMSharedModuleRef smod;
-
- smod = LLVMOrcMakeSharedModule(context->module);
- handle->stack = compile_orc;
- if (LLVMOrcAddEagerlyCompiledIR(compile_orc, &handle->orc_handle, smod,
- llvm_resolve_symbol, NULL))
- elog(ERROR, "failed to JIT module");
-
- LLVMOrcDisposeSharedModuleRef(smod);
- }
-#else /* LLVM 4.0 and 3.9 */
- {
- handle->stack = compile_orc;
- handle->orc_handle = LLVMOrcAddEagerlyCompiledIR(compile_orc, context->module,
- llvm_resolve_symbol, NULL);
-
- LLVMDisposeModule(context->module);
- }
#endif
INSTR_TIME_SET_CURRENT(endtime);