Thread

Commits

  1. meson: Add some missing LLVM function checks

  2. Remove dead code

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

  1. some LLVM function checks missing in meson

    Peter Eisentraut <peter@eisentraut.org> — 2024-04-11T15:26:33Z

    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?
    
    
    
    
  2. Re: some LLVM function checks missing in meson

    Heikki Linnakangas <hlinnaka@iki.fi> — 2024-04-13T08:25:15Z

    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)
    
    
    
    
    
  3. Re: some LLVM function checks missing in meson

    Peter Eisentraut <peter@eisentraut.org> — 2024-04-17T08:53:49Z

    On 13.04.24 10:25, Heikki Linnakangas wrote:
    > 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.
    
    Right, that was clearly forgotten.  I have removed the dead code.
    
    
    
    
  4. Re: some LLVM function checks missing in meson

    Peter Eisentraut <peter@eisentraut.org> — 2024-04-17T13:29:29Z

    On 13.04.24 10:25, Heikki Linnakangas wrote:
    >> 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.
    
    Committed that, too.