From 83974d87ad3dbaad5f801d8870fe4ea58f8f9885 Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@gmail.com>
Date: Fri, 28 Nov 2025 01:30:50 +1300
Subject: [PATCH 3/6] jit: Drop LLVMGetFunctionReturnType() wrapper.

Commit 37d5babb added this C wrapper function to reach the C++ function
llvm::Function::getReturnType(), but it's redundant since you can call
the existing LLVMGetReturnType() given a function type at the cost of
one extra call.
---
 src/backend/jit/llvm/llvmjit.c        | 4 ++--
 src/backend/jit/llvm/llvmjit_wrap.cpp | 6 ------
 src/include/jit/llvmjit.h             | 1 -
 3 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/src/backend/jit/llvm/llvmjit.c b/src/backend/jit/llvm/llvmjit.c
index 0e67267e807..6cd457e429a 100644
--- a/src/backend/jit/llvm/llvmjit.c
+++ b/src/backend/jit/llvm/llvmjit.c
@@ -521,7 +521,7 @@ llvm_copy_attributes(LLVMValueRef v_from, LLVMValueRef v_to)
 	/* copy function attributes */
 	llvm_copy_attributes_at_index(v_from, v_to, LLVMAttributeFunctionIndex);
 
-	if (LLVMGetTypeKind(LLVMGetFunctionReturnType(v_to)) != LLVMVoidTypeKind)
+	if (LLVMGetTypeKind(LLVMGetReturnType(LLVMGetFunctionType(v_to))) != LLVMVoidTypeKind)
 	{
 		/* and the return value attributes */
 		llvm_copy_attributes_at_index(v_from, v_to, LLVMAttributeReturnIndex);
@@ -960,7 +960,7 @@ load_return_type(LLVMModuleRef mod, const char *name)
 	if (!value)
 		elog(ERROR, "function %s is unknown", name);
 
-	typ = LLVMGetFunctionReturnType(value); /* in llvmjit_wrap.cpp */
+	typ = LLVMGetReturnType(LLVMGetFunctionType(value));
 
 	return typ;
 }
diff --git a/src/backend/jit/llvm/llvmjit_wrap.cpp b/src/backend/jit/llvm/llvmjit_wrap.cpp
index c31a57b8563..4033e730d7c 100644
--- a/src/backend/jit/llvm/llvmjit_wrap.cpp
+++ b/src/backend/jit/llvm/llvmjit_wrap.cpp
@@ -34,12 +34,6 @@ extern "C"
  * C-API extensions.
  */
 
-LLVMTypeRef
-LLVMGetFunctionReturnType(LLVMValueRef r)
-{
-	return llvm::wrap(llvm::unwrap<llvm::Function>(r)->getReturnType());
-}
-
 LLVMTypeRef
 LLVMGetFunctionType(LLVMValueRef r)
 {
diff --git a/src/include/jit/llvmjit.h b/src/include/jit/llvmjit.h
index b3c75022f55..1a8369005ef 100644
--- a/src/include/jit/llvmjit.h
+++ b/src/include/jit/llvmjit.h
@@ -139,7 +139,6 @@ extern LLVMValueRef slot_compile_deform(struct LLVMJitContext *context, TupleDes
  * Error handling related functions.
  ****************************************************************************
  */
-extern LLVMTypeRef LLVMGetFunctionReturnType(LLVMValueRef r);
 extern LLVMTypeRef LLVMGetFunctionType(LLVMValueRef r);
 #ifdef USE_LLVM_BACKPORT_SECTION_MEMORY_MANAGER
 extern LLVMOrcObjectLayerRef LLVMOrcCreateRTDyldObjectLinkingLayerWithSafeSectionMemoryManager(LLVMOrcExecutionSessionRef ES);
-- 
2.51.2

