]> git.ipfire.org Git - thirdparty/postgresql.git/commit
jit: Stop emitting lifetime.end for LLVM 22.
authorThomas Munro <tmunro@postgresql.org>
Thu, 2 Apr 2026 02:24:44 +0000 (15:24 +1300)
committerThomas Munro <tmunro@postgresql.org>
Thu, 2 Apr 2026 02:55:21 +0000 (15:55 +1300)
commitc00ea2b5b4f16496d0f8545266af0b9945e54800
tree7c6ca5c0a137cba59b771fcfa4046b30f5ec7dcf
parentba8b89123694cce4a2f1d52dc11450e2bbcd9ea4
jit: Stop emitting lifetime.end for LLVM 22.

The lifetime.end intrinsic can now only be used for stack memory
allocated with alloca[1][2][3].  We use it to tell LLVM about the
lifetime of function arguments/isnull values that we keep in palloc'd
memory, so that it can avoid spilling registers to memory.

We might need to rearrange things and put them on the stack, but that'll
take some research.  In the meantime, unbreak the build on LLVM 22.

[1] https://github.com/llvm/llvm-project/pull/149310
[2] https://llvm.org/docs/LangRef.html#llvm-lifetime-end-intrinsic
[3] https://llvm.org/docs/LangRef.html#i-alloca

Backpatch-through: 14
Reviewed-by: Matheus Alcantara <matheusssilv97@gmail.com> (earlier attempt)
Reviewed-by: Anthonin Bonnefoy <anthonin.bonnefoy@datadoghq.com> (earlier attempt)
Reviewed-by: Andres Freund <andres@anarazel.de> (earlier attempt)
Discussion: https://postgr.es/m/CA%2BhUKGJTumad75o8Zao-LFseEbt%3DenbUFCM7LZVV%3Dc8yg2i7dg%40mail.gmail.com
src/backend/jit/llvm/llvmjit_expr.c