Subject: Re: some LLVM function checks missing in meson

From: Heikki Linnakangas <[email-masked]>
Date: Sat, 13 Apr 2024 11:25:15 +0300

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)

---

From: Peter Eisentraut <[email-masked]>
Date: Wed, 17 Apr 2024 10:53:49 +0200

> commit e9a9843e13. I believe that's a leftover that should also have 

Right, that was clearly forgotten.  I have removed the dead code.

---

From: Peter Eisentraut <[email-masked]>
Date: Wed, 17 Apr 2024 15:29:29 +0200

> checks should be in sync.

Committed that, too.