Subject: Where are we on supporting LLVM's opaque-pointer changes?

From: Tom Lane <[email-masked]>
Date: Fri, 14 Apr 2023 10:31:48 -0400

LLVM 16 is apparently released, because Fedora has started using
it in their rawhide (development) branch, which means Postgres
is failing to build there [1][2]:

../../../../src/include/jit/llvmjit_emit.h: In function 'l_load_gep1':
../../../../src/include/jit/llvmjit_emit.h:123:30: warning: implicit declaration of function 'LLVMBuildGEP'; did you mean 'LLVMBuildGEP2'? [-Wimplicit-function-declaration]
  123 |         LLVMValueRef v_ptr = LLVMBuildGEP(b, v, &idx, 1, "");
      |                              ^~~~~~~~~~~~
      |                              LLVMBuildGEP2
... etc etc etc ...
leading to lots of
+ERROR:  could not load library "/builddir/build/BUILD/postgresql-15.1/tmp_install/usr/lib64/pgsql/llvmjit.so": /builddir/build/BUILD/postgresql-15.1/tmp_install/usr/lib64/pgsql/llvmjit.so: undefined symbol: LLVMBuildGEP

I know we've been letting this topic slide, but we are out of runway.
I propose adding this as a must-fix open item for PG 16.

			regards, tom lane

[1] https://bugzilla.redhat.com/show_bug.cgi?id=2186381
[2] https://kojipkgs.fedoraproject.org/work/tasks/8408/99938408/build.log