postgres.git / summary / log / commit / refs

commit    d701f0d1f3e7ed9e8b8ff0d368add9cdae3b8108
Author:   Thomas Munro <tmunro@postgresql.org>
Date:     Wed Oct 18 14:01:55 2023 +0000
First released in: 17.0, 12.17, 13.13, 14.10, 15.5, 16.1

    jit: Supply LLVMGlobalGetValueType() for LLVM < 8.
    
    Commit 37d5babb used this C API function while adding support for LLVM
    16 and opaque pointers, but it's not available in LLVM 7 and older.
    Provide it in our own llvmjit_wrap.cpp.  It just calls a C++ function
    that pre-dates LLVM 3.9, our minimum target.
    
    Back-patch to 12, like 37d5babb.
    
    Discussion: https://postgr.es/m/CA%2BhUKGKnLnJnWrkr%3D4mSGhE5FuTK55FY15uULR7%3Dzzc%3DwX4Nqw%40mail.gmail.com


src/backend/jit/llvm/llvmjit_wrap.cpp | 8 ++++++++ src/include/jit/llvmjit.h | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/src/backend/jit/llvm/llvmjit_wrap.cpp b/src/backend/jit/llvm/llvmjit_wrap.cpp index 692d7ff657e..89b276e692c 100644 --- a/src/backend/jit/llvm/llvmjit_wrap.cpp +++ b/src/backend/jit/llvm/llvmjit_wrap.cpp @@ -88,3 +88,11 @@ LLVMGetFunctionType(LLVMValueRef r) { return llvm::wrap(llvm::unwrap<llvm::Function>(r)->getFunctionType()); } + +#if LLVM_VERSION_MAJOR < 8 +LLVMTypeRef +LLVMGlobalGetValueType(LLVMValueRef g) +{ + return llvm::wrap(llvm::unwrap<llvm::GlobalValue>(g)->getValueType()); +} +#endif diff --git a/src/include/jit/llvmjit.h b/src/include/jit/llvmjit.h index 84aaaf5fc45..4009b43055b 100644 --- a/src/include/jit/llvmjit.h +++ b/src/include/jit/llvmjit.h @@ -141,6 +141,10 @@ extern unsigned LLVMGetAttributeCountAtIndexPG(LLVMValueRef F, uint32 Idx); extern LLVMTypeRef LLVMGetFunctionReturnType(LLVMValueRef r); extern LLVMTypeRef LLVMGetFunctionType(LLVMValueRef r); +#if LLVM_MAJOR_VERSION < 8 +extern LLVMTypeRef LLVMGlobalGetValueType(LLVMValueRef g); +#endif + #ifdef __cplusplus } /* extern "C" */ #endif [parent: 15ddc9725eb7]