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;