Re: some LLVM function checks missing in meson

Heikki Linnakangas <hlinnaka@iki.fi>

From: Heikki Linnakangas <hlinnaka@iki.fi>
To: Peter Eisentraut <peter@eisentraut.org>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2024-04-13T08:25:15Z
Lists: pgsql-hackers
On 11/04/2024 18:26, Peter Eisentraut wrote:
> I have been checking the pg_config.h generated by configure and meson to
> see if there is anything materially different.  I found that
> 
> HAVE_DECL_LLVMCREATEGDBREGISTRATIONLISTENER and
> HAVE_DECL_LLVMCREATEPERFJITEVENTLISTENER
> 
> are missing on the meson side.
> 
> Something like the below would appear to fix that:
> 
> diff --git a/meson.build b/meson.build
> index 43fad5323c0..cdfd31377d1 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -2301,6 +2301,14 @@ decl_checks += [
>      ['pwritev', 'sys/uio.h'],
>    ]
> 
> +# Check presence of some optional LLVM functions.
> +if llvm.found()
> +  decl_checks += [
> +    ['LLVMCreateGDBRegistrationListener', 'llvm-c/ExecutionEngine.h'],
> +    ['LLVMCreatePerfJITEventListener', 'llvm-c/ExecutionEngine.h'],
> +  ]
> +endif
> +
>    foreach c : decl_checks
>      func = c.get(0)
>      header = c.get(1)
> 
> I don't know what these functions do, but the symbols are used in the
> source code.  Thoughts?

+1. I also don't know what they do, but clearly the configure and meson 
checks should be in sync.

There's also this in llvmjit.c:

> 		if (llvm_opt3_orc)
> 		{
> #if defined(HAVE_DECL_LLVMORCREGISTERPERF) && HAVE_DECL_LLVMORCREGISTERPERF
> 			if (jit_profiling_support)
> 				LLVMOrcUnregisterPerf(llvm_opt3_orc);
> #endif
> 			LLVMOrcDisposeInstance(llvm_opt3_orc);
> 			llvm_opt3_orc = NULL;
> 		}
> 
> 		if (llvm_opt0_orc)
> 		{
> #if defined(HAVE_DECL_LLVMORCREGISTERPERF) && HAVE_DECL_LLVMORCREGISTERPERF
> 			if (jit_profiling_support)
> 				LLVMOrcUnregisterPerf(llvm_opt0_orc);
> #endif
> 			LLVMOrcDisposeInstance(llvm_opt0_orc);
> 			llvm_opt0_orc = NULL;
> 		}
> 	}

The autoconf test that set HAVE_DECL_LLVMORCREGISTERPERF was removed in 
commit e9a9843e13. I believe that's a leftover that should also have 
been removed.

-- 
Heikki Linnakangas
Neon (https://neon.tech)




Commits

  1. meson: Add some missing LLVM function checks

  2. Remove dead code

  3. LLVMJIT: Adapt to API changes in gdb and perf support.