jit: Create void type in the right context
Commit 3b991f81c45 introduced a specific context for types such that all no longer referenced types can be dropped periodically rather than leaking. One void pointer type creation was however missed leading to an assertion failure in LLVM Debug builds. Per buildfarm members canebreak and urutu. Fix with assistance from Andres. The codepath in question was refactored in version 13 hence why this only affected version 12. Reported-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/1106876.1700409912@sss.pgh.pa.us
This commit is contained in:
parent
e81e617f32
commit
c922b24106
@ -2620,7 +2620,9 @@ build_EvalXFunc(LLVMBuilderRef b, LLVMModuleRef mod, const char *funcname,
|
||||
LLVMValueRef v_fn;
|
||||
LLVMTypeRef param_types[3];
|
||||
LLVMValueRef params[3];
|
||||
LLVMContextRef lc;
|
||||
|
||||
lc = LLVMGetModuleContext(mod);
|
||||
v_fn = LLVMGetNamedFunction(mod, funcname);
|
||||
if (!v_fn)
|
||||
{
|
||||
@ -2628,7 +2630,7 @@ build_EvalXFunc(LLVMBuilderRef b, LLVMModuleRef mod, const char *funcname,
|
||||
param_types[1] = l_ptr(StructExprEvalStep);
|
||||
param_types[2] = l_ptr(StructExprContext);
|
||||
|
||||
sig = LLVMFunctionType(LLVMVoidType(),
|
||||
sig = LLVMFunctionType(LLVMVoidTypeInContext(lc),
|
||||
param_types, lengthof(param_types),
|
||||
false);
|
||||
v_fn = LLVMAddFunction(mod, funcname, sig);
|
||||
|
Loading…
x
Reference in New Issue
Block a user