From 52397f8c70641080f2487ee5f019f143dd35957c Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Sun, 22 Oct 2023 23:20:56 +0000 Subject: [PATCH] jit: Fix LLVM back-patching bug in 12 and 13. While back-patching f90b4a84, I missed that branches before 14 did some type punning in a function parameter. That didn't cause any problem for release builds of LLVM, but debug builds of some older versions would fail a type cross-check assertion. To fix this, we need to back-patch a line of df99ddc7. Per build farm animal xenodermus, which runs a debug build of LLVM 6 with jit_above_cost=0. diff --git a/src/backend/jit/llvm/llvmjit_expr.c b/src/backend/jit/llvm/llvmjit_expr.c index d84fbba7cc..c2e367f00d 100644 --- a/src/backend/jit/llvm/llvmjit_expr.c +++ b/src/backend/jit/llvm/llvmjit_expr.c @@ -1126,7 +1126,7 @@ llvm_compile_expr(ExprState *state) llvm_pg_var_type("TypeExecEvalSubroutine")); v_params[0] = v_state; - v_params[1] = l_ptr_const(op, l_ptr(TypeSizeT)); + v_params[1] = l_ptr_const(op, l_ptr(StructExprEvalStep)); v_params[2] = v_econtext; l_call(b, LLVMGetFunctionType(ExecEvalSubroutineTemplate), -- 2.42.0