diff options
author | Thomas Munro <tmunro@postgresql.org> | 2025-09-17 12:00:16 +1200 |
---|---|---|
committer | Thomas Munro <tmunro@postgresql.org> | 2025-09-17 13:38:35 +1200 |
commit | 0951942bba25f85ad29a4f096ed51a356652b5a2 (patch) | |
tree | b8a5c6c88fdfcdbf4ab19ede16518c0b9a4413c3 /src/include/jit/llvmjit_emit.h | |
parent | 39f67d9b554fcd6dfb6c4f02a4af757eecd1fecf (diff) |
jit: Fix type used for Datum values in LLVM IR.
Commit 2a600a93 made Datum 8 bytes wide everywhere. It was no longer
appropriate to use TypeSizeT on 32 bit systems, and JIT compilation
would fail with various type check errors. Introduce a separate
LLVMTypeRef with the name TypeDatum. TypeSizeT is still used in some
places for actual size_t values.
Reported-by: Dmitry Mityugov <d.mityugov@postgrespro.ru>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Tested-by: Dmitry Mityugov <d.mityugov@postgrespro.ru>
Discussion: https://postgr.es/m/0a9f0be59171c2e8f1b3bc10f4fcf267%40postgrespro.ru
Diffstat (limited to 'src/include/jit/llvmjit_emit.h')
-rw-r--r-- | src/include/jit/llvmjit_emit.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/include/jit/llvmjit_emit.h b/src/include/jit/llvmjit_emit.h index df5a9fc8500..0e57a332b6e 100644 --- a/src/include/jit/llvmjit_emit.h +++ b/src/include/jit/llvmjit_emit.h @@ -87,6 +87,15 @@ l_sizet_const(size_t i) } /* + * Emit constant integer. + */ +static inline LLVMValueRef +l_datum_const(Datum i) +{ + return LLVMConstInt(TypeDatum, i, false); +} + +/* * Emit constant boolean, as used for storage (e.g. global vars, structs). */ static inline LLVMValueRef @@ -313,7 +322,7 @@ l_funcnull(LLVMBuilderRef b, LLVMValueRef v_fcinfo, size_t argno) static inline LLVMValueRef l_funcvalue(LLVMBuilderRef b, LLVMValueRef v_fcinfo, size_t argno) { - return l_load(b, TypeSizeT, l_funcvaluep(b, v_fcinfo, argno), ""); + return l_load(b, TypeDatum, l_funcvaluep(b, v_fcinfo, argno), ""); } #endif /* USE_LLVM */ |