aboutsummaryrefslogtreecommitdiff
path: root/src/backend/jit/llvm/llvmjit.c
diff options
context:
space:
mode:
authorPeter Eisentraut <peter@eisentraut.org>2024-10-01 04:49:11 -0400
committerPeter Eisentraut <peter@eisentraut.org>2024-10-01 04:49:11 -0400
commit972c2cd2882b6dd7a2059d030d03e89dae47ede7 (patch)
tree854f3705f09fbe826577a0d575173aab3c0dd6e5 /src/backend/jit/llvm/llvmjit.c
parent1b4d52c3556b9abad10165ce7298062cf7eb7005 (diff)
downloadpostgresql-972c2cd2882b6dd7a2059d030d03e89dae47ede7.tar.gz
postgresql-972c2cd2882b6dd7a2059d030d03e89dae47ede7.zip
jit: Require at least LLVM 14, if enabled.
Remove support for LLVM versions 10-13. The default on all non-EOL'd OSes represented in our build farm will be at least LLVM 14 when PostgreSQL 18 ships. Author: Thomas Munro <thomas.munro@gmail.com> 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.c101
1 files changed, 0 insertions, 101 deletions
diff --git a/src/backend/jit/llvm/llvmjit.c b/src/backend/jit/llvm/llvmjit.c
index 0f6cec52496..2a83415d439 100644
--- a/src/backend/jit/llvm/llvmjit.c
+++ b/src/backend/jit/llvm/llvmjit.c
@@ -21,13 +21,9 @@
#if LLVM_VERSION_MAJOR > 16
#include <llvm-c/Transforms/PassBuilder.h>
#endif
-#if LLVM_VERSION_MAJOR > 11
#include <llvm-c/Orc.h>
#include <llvm-c/OrcEE.h>
#include <llvm-c/LLJIT.h>
-#else
-#include <llvm-c/OrcBindings.h>
-#endif
#include <llvm-c/Support.h>
#include <llvm-c/Target.h>
#if LLVM_VERSION_MAJOR < 17
@@ -50,13 +46,8 @@
/* Handle of a module emitted via ORC JIT */
typedef struct LLVMJitHandle
{
-#if LLVM_VERSION_MAJOR > 11
LLVMOrcLLJITRef lljit;
LLVMOrcResourceTrackerRef resource_tracker;
-#else
- LLVMOrcJITStackRef stack;
- LLVMOrcModuleHandle orc_handle;
-#endif
} LLVMJitHandle;
@@ -103,14 +94,9 @@ static LLVMContextRef llvm_context;
static LLVMTargetRef llvm_targetref;
-#if LLVM_VERSION_MAJOR > 11
static LLVMOrcThreadSafeContextRef llvm_ts_context;
static LLVMOrcLLJITRef llvm_opt0_orc;
static LLVMOrcLLJITRef llvm_opt3_orc;
-#else /* LLVM_VERSION_MAJOR > 11 */
-static LLVMOrcJITStackRef llvm_opt0_orc;
-static LLVMOrcJITStackRef llvm_opt3_orc;
-#endif /* LLVM_VERSION_MAJOR > 11 */
static void llvm_release_context(JitContext *context);
@@ -124,10 +110,8 @@ static void llvm_set_target(void);
static void llvm_recreate_llvm_context(void);
static uint64_t llvm_resolve_symbol(const char *name, void *ctx);
-#if LLVM_VERSION_MAJOR > 11
static LLVMOrcLLJITRef llvm_create_jit_instance(LLVMTargetMachineRef tm);
static char *llvm_error_message(LLVMErrorRef error);
-#endif /* LLVM_VERSION_MAJOR > 11 */
/* ResourceOwner callbacks to hold JitContexts */
static void ResOwnerReleaseJitContext(Datum res);
@@ -292,7 +276,6 @@ llvm_release_context(JitContext *context)
{
LLVMJitHandle *jit_handle = (LLVMJitHandle *) lfirst(lc);
-#if LLVM_VERSION_MAJOR > 11
{
LLVMOrcExecutionSessionRef ee;
LLVMOrcSymbolStringPoolRef sp;
@@ -310,11 +293,6 @@ llvm_release_context(JitContext *context)
sp = LLVMOrcExecutionSessionGetSymbolStringPool(ee);
LLVMOrcSymbolStringPoolClearDeadEntries(sp);
}
-#else /* LLVM_VERSION_MAJOR > 11 */
- {
- LLVMOrcRemoveModule(jit_handle->stack, jit_handle->orc_handle);
- }
-#endif /* LLVM_VERSION_MAJOR > 11 */
pfree(jit_handle);
}
@@ -397,7 +375,6 @@ llvm_get_function(LLVMJitContext *context, const char *funcname)
* to mangle here.
*/
-#if LLVM_VERSION_MAJOR > 11
foreach(lc, context->handles)
{
LLVMJitHandle *handle = (LLVMJitHandle *) lfirst(lc);
@@ -427,19 +404,6 @@ llvm_get_function(LLVMJitContext *context, const char *funcname)
if (addr)
return (void *) (uintptr_t) addr;
}
-#else
- foreach(lc, context->handles)
- {
- LLVMOrcTargetAddress addr;
- LLVMJitHandle *handle = (LLVMJitHandle *) lfirst(lc);
-
- addr = 0;
- if (LLVMOrcGetSymbolAddressIn(handle->stack, &addr, handle->orc_handle, 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);
@@ -740,11 +704,7 @@ llvm_compile_module(LLVMJitContext *context)
MemoryContext oldcontext;
instr_time starttime;
instr_time endtime;
-#if LLVM_VERSION_MAJOR > 11
LLVMOrcLLJITRef compile_orc;
-#else
- LLVMOrcJITStackRef compile_orc;
-#endif
if (context->base.flags & PGJIT_OPT3)
compile_orc = llvm_opt3_orc;
@@ -801,7 +761,6 @@ llvm_compile_module(LLVMJitContext *context)
* faster instruction selection mechanism is used.
*/
INSTR_TIME_SET_CURRENT(starttime);
-#if LLVM_VERSION_MAJOR > 11
{
LLVMOrcThreadSafeModuleRef ts_module;
LLVMErrorRef error;
@@ -829,16 +788,6 @@ llvm_compile_module(LLVMJitContext *context)
/* LLVMOrcLLJITAddLLVMIRModuleWithRT takes ownership of the module */
}
-#else
- {
- handle->stack = compile_orc;
- if (LLVMOrcAddEagerlyCompiledIR(compile_orc, &handle->orc_handle, context->module,
- llvm_resolve_symbol, NULL))
- elog(ERROR, "failed to JIT module");
-
- /* LLVMOrcAddEagerlyCompiledIR takes ownership of the module */
- }
-#endif
INSTR_TIME_SET_CURRENT(endtime);
INSTR_TIME_ACCUM_DIFF(context->base.instr.emission_counter,
@@ -950,7 +899,6 @@ llvm_session_initialize(void)
/* force symbols in main binary to be loaded */
LLVMLoadLibraryPermanently(NULL);
-#if LLVM_VERSION_MAJOR > 11
{
llvm_ts_context = LLVMOrcCreateNewThreadSafeContext();
@@ -960,31 +908,6 @@ llvm_session_initialize(void)
llvm_opt3_orc = llvm_create_jit_instance(opt3_tm);
opt3_tm = 0;
}
-#else /* LLVM_VERSION_MAJOR > 11 */
- {
- llvm_opt0_orc = LLVMOrcCreateInstance(opt0_tm);
- llvm_opt3_orc = LLVMOrcCreateInstance(opt3_tm);
-
-#if defined(HAVE_DECL_LLVMCREATEGDBREGISTRATIONLISTENER) && HAVE_DECL_LLVMCREATEGDBREGISTRATIONLISTENER
- if (jit_debugging_support)
- {
- LLVMJITEventListenerRef l = LLVMCreateGDBRegistrationListener();
-
- LLVMOrcRegisterJITEventListener(llvm_opt0_orc, l);
- LLVMOrcRegisterJITEventListener(llvm_opt3_orc, l);
- }
-#endif
-#if defined(HAVE_DECL_LLVMCREATEPERFJITEVENTLISTENER) && HAVE_DECL_LLVMCREATEPERFJITEVENTLISTENER
- if (jit_profiling_support)
- {
- LLVMJITEventListenerRef l = LLVMCreatePerfJITEventListener();
-
- LLVMOrcRegisterJITEventListener(llvm_opt0_orc, l);
- LLVMOrcRegisterJITEventListener(llvm_opt3_orc, l);
- }
-#endif
- }
-#endif /* LLVM_VERSION_MAJOR > 11 */
on_proc_exit(llvm_shutdown, 0);
@@ -1014,7 +937,6 @@ llvm_shutdown(int code, Datum arg)
elog(PANIC, "LLVMJitContext in use count not 0 at exit (is %zu)",
llvm_jit_context_in_use_count);
-#if LLVM_VERSION_MAJOR > 11
{
if (llvm_opt3_orc)
{
@@ -1032,23 +954,6 @@ llvm_shutdown(int code, Datum arg)
llvm_ts_context = NULL;
}
}
-#else /* LLVM_VERSION_MAJOR > 11 */
- {
- /* unregister profiling support, needs to be flushed to be useful */
-
- if (llvm_opt3_orc)
- {
- LLVMOrcDisposeInstance(llvm_opt3_orc);
- llvm_opt3_orc = NULL;
- }
-
- if (llvm_opt0_orc)
- {
- LLVMOrcDisposeInstance(llvm_opt0_orc);
- llvm_opt0_orc = NULL;
- }
- }
-#endif /* LLVM_VERSION_MAJOR > 11 */
}
/* helper for llvm_create_types, returning a function's return type */
@@ -1218,8 +1123,6 @@ llvm_resolve_symbol(const char *symname, void *ctx)
return (uint64_t) addr;
}
-#if LLVM_VERSION_MAJOR > 11
-
static LLVMErrorRef
llvm_resolve_symbols(LLVMOrcDefinitionGeneratorRef GeneratorObj, void *Ctx,
LLVMOrcLookupStateRef *LookupState, LLVMOrcLookupKind Kind,
@@ -1238,9 +1141,7 @@ llvm_resolve_symbols(LLVMOrcDefinitionGeneratorRef GeneratorObj, void *Ctx,
{
const char *name = LLVMOrcSymbolStringPoolEntryStr(LookupSet[i].Name);
-#if LLVM_VERSION_MAJOR > 12
LLVMOrcRetainSymbolStringPoolEntry(LookupSet[i].Name);
-#endif
symbols[i].Name = LookupSet[i].Name;
symbols[i].Sym.Address = llvm_resolve_symbol(name, NULL);
symbols[i].Sym.Flags.GenericFlags = LLVMJITSymbolGenericFlagsExported;
@@ -1369,8 +1270,6 @@ llvm_error_message(LLVMErrorRef error)
return msg;
}
-#endif /* LLVM_VERSION_MAJOR > 11 */
-
/*
* ResourceOwner callbacks
*/