Track LLVM 14 API changes.
authorThomas Munro <tmunro@postgresql.org>
Sun, 26 Sep 2021 21:39:01 +0000 (10:39 +1300)
committerThomas Munro <tmunro@postgresql.org>
Sun, 26 Sep 2021 21:53:20 +0000 (10:53 +1300)
Only done on the master branch for now to fix build farm animal seawasp
(which tests bleeeding edge PostgreSQL with bleeding edge LLVM).  We can
back-patch a consolidated fix closer to LLVM 14's release, once its API
has stopped moving around.

Discussion: https://postgr.es/m/CA%2BhUKGL%3Dyg6qqgg6W6SAuvRQejditeoDNy-X3b9H_6Fnw8j5Wg%40mail.gmail.com

src/backend/jit/llvm/llvmjit_inline.cpp

index 6f03595db5a40823d7f55b105bf9ef31764d1adc..9bb4b672a736a43abad0ecaae728e5b292a77dea 100644 (file)
@@ -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;