summaryrefslogtreecommitdiff
path: root/dev-db/postgresql/files/postgres-llvm14.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dev-db/postgresql/files/postgres-llvm14.patch')
-rw-r--r--dev-db/postgresql/files/postgres-llvm14.patch154
1 files changed, 0 insertions, 154 deletions
diff --git a/dev-db/postgresql/files/postgres-llvm14.patch b/dev-db/postgresql/files/postgres-llvm14.patch
deleted file mode 100644
index 2c7b91d75153..000000000000
--- a/dev-db/postgresql/files/postgres-llvm14.patch
+++ /dev/null
@@ -1,154 +0,0 @@
-From d9f7ad54e552262ee0090e88d5abd3e04fcdeac8 Mon Sep 17 00:00:00 2001
-From: Thomas Munro <tmunro@postgresql.org>
-Date: Wed, 16 Mar 2022 11:35:00 +1300
-Subject: [PATCH] Back-patch LLVM 14 API changes.
-
-Since LLVM 14 has stopped changing and is about to be released,
-back-patch the following changes from the master branch:
-
- e6a7600202105919bffd62b3dfd941f4a94e082b
- 807fee1a39de6bb8184082012e643951abb9ad1d
- a56e7b66010f330782243de9e25ac2a6596be0e1
-
-Back-patch to 11, where LLVM JIT support came in.
----
- src/backend/jit/llvm/Makefile | 6 +++++
- src/backend/jit/llvm/llvmjit_error.cpp | 35 +++++++++++++++++++++----
- src/backend/jit/llvm/llvmjit_inline.cpp | 12 ++++++++-
- 3 files changed, 47 insertions(+), 6 deletions(-)
-
-diff --git a/src/backend/jit/llvm/Makefile b/src/backend/jit/llvm/Makefile
-index 0268bd46d5..2da122a391 100644
---- a/src/backend/jit/llvm/Makefile
-+++ b/src/backend/jit/llvm/Makefile
-@@ -22,6 +22,12 @@ endif
- PGFILEDESC = "llvmjit - JIT using LLVM"
- NAME = llvmjit
-
-+# LLVM 14 produces deprecation warnings. We'll need to make some changes
-+# before the relevant functions are removed, but for now silence the warnings.
-+ifeq ($(GCC), yes)
-+LLVM_CFLAGS += -Wno-deprecated-declarations
-+endif
-+
- # All files in this directory use LLVM.
- CFLAGS += $(LLVM_CFLAGS)
- CXXFLAGS += $(LLVM_CXXFLAGS)
-diff --git a/src/backend/jit/llvm/llvmjit_error.cpp b/src/backend/jit/llvm/llvmjit_error.cpp
-index f4720732a3..5ad92f3090 100644
---- a/src/backend/jit/llvm/llvmjit_error.cpp
-+++ b/src/backend/jit/llvm/llvmjit_error.cpp
-@@ -23,15 +23,22 @@ extern "C"
-
- #include "jit/llvmjit.h"
-
-+#include <new>
-
- static int fatal_new_handler_depth = 0;
- static std::new_handler old_new_handler = NULL;
-
- static void fatal_system_new_handler(void);
- #if LLVM_VERSION_MAJOR > 4
-+static void fatal_llvm_new_handler(void *user_data, const char *reason, bool gen_crash_diag);
-+#if LLVM_VERSION_MAJOR < 14
- static void fatal_llvm_new_handler(void *user_data, const std::string& reason, bool gen_crash_diag);
- #endif
-+#endif
-+static void fatal_llvm_error_handler(void *user_data, const char *reason, bool gen_crash_diag);
-+#if LLVM_VERSION_MAJOR < 14
- static void fatal_llvm_error_handler(void *user_data, const std::string& reason, bool gen_crash_diag);
-+#endif
-
-
- /*
-@@ -129,23 +136,41 @@ fatal_system_new_handler(void)
- #if LLVM_VERSION_MAJOR > 4
- static void
- fatal_llvm_new_handler(void *user_data,
-- const std::string& reason,
-+ const char *reason,
- bool gen_crash_diag)
- {
- ereport(FATAL,
- (errcode(ERRCODE_OUT_OF_MEMORY),
- errmsg("out of memory"),
-- errdetail("While in LLVM: %s", reason.c_str())));
-+ errdetail("While in LLVM: %s", reason)));
-+}
-+#if LLVM_VERSION_MAJOR < 14
-+static void
-+fatal_llvm_new_handler(void *user_data,
-+ const std::string& reason,
-+ bool gen_crash_diag)
-+{
-+ fatal_llvm_new_handler(user_data, reason.c_str(), gen_crash_diag);
- }
- #endif
-+#endif
-
- static void
- fatal_llvm_error_handler(void *user_data,
-- const std::string& reason,
-+ const char *reason,
- bool gen_crash_diag)
- {
- ereport(FATAL,
- (errcode(ERRCODE_OUT_OF_MEMORY),
-- errmsg("fatal llvm error: %s",
-- reason.c_str())));
-+ errmsg("fatal llvm error: %s", reason)));
- }
-+
-+#if LLVM_VERSION_MAJOR < 14
-+static void
-+fatal_llvm_error_handler(void *user_data,
-+ const std::string& reason,
-+ bool gen_crash_diag)
-+{
-+ fatal_llvm_error_handler(user_data, reason.c_str(), gen_crash_diag);
-+}
-+#endif
-diff --git a/src/backend/jit/llvm/llvmjit_inline.cpp b/src/backend/jit/llvm/llvmjit_inline.cpp
-index 6f03595db5..9bb4b672a7 100644
---- a/src/backend/jit/llvm/llvmjit_inline.cpp
-+++ b/src/backend/jit/llvm/llvmjit_inline.cpp
-@@ -594,7 +594,11 @@ function_inlinable(llvm::Function &F,
- if (F.materialize())
- elog(FATAL, "failed to materialize metadata");
-
-- if (F.getAttributes().hasFnAttribute(llvm::Attribute::NoInline))
-+#if LLVM_VERSION_MAJOR < 14
-+#define hasFnAttr hasFnAttribute
-+#endif
-+
-+ if (F.getAttributes().hasFnAttr(llvm::Attribute::NoInline))
- {
- ilog(DEBUG1, "ineligibile to import %s due to noinline",
- F.getName().data());
-@@ -871,7 +875,9 @@ create_redirection_function(std::unique_ptr<llvm::Module> &importMod,
- llvm::Function *AF;
- llvm::BasicBlock *BB;
- llvm::CallInst *fwdcall;
-+#if LLVM_VERSION_MAJOR < 14
- llvm::Attribute inlineAttribute;
-+#endif
-
- AF = llvm::Function::Create(F->getFunctionType(),
- LinkageTypes::AvailableExternallyLinkage,
-@@ -880,9 +886,13 @@ create_redirection_function(std::unique_ptr<llvm::Module> &importMod,
-
- Builder.SetInsertPoint(BB);
- fwdcall = Builder.CreateCall(F, &*AF->arg_begin());
-+#if LLVM_VERSION_MAJOR < 14
- inlineAttribute = llvm::Attribute::get(Context,
- llvm::Attribute::AlwaysInline);
- fwdcall->addAttribute(~0U, inlineAttribute);
-+#else
-+ fwdcall->addFnAttr(llvm::Attribute::AlwaysInline);
-+#endif
- Builder.CreateRet(fwdcall);
-
- return AF;
---
-2.30.2
-