diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 18841ac874bd..5d3d58cb12cb 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -177,6 +177,7 @@ set(ARROW_DOC_DIR "share/doc/${PROJECT_NAME}") set(BUILD_SUPPORT_DIR "${CMAKE_SOURCE_DIR}/build-support") set(ARROW_LLVM_VERSIONS + "21.1" "20.1" "19.1" "18.1" diff --git a/cpp/src/gandiva/engine.cc b/cpp/src/gandiva/engine.cc index 6148cfab7480..8457e5c42501 100644 --- a/cpp/src/gandiva/engine.cc +++ b/cpp/src/gandiva/engine.cc @@ -202,10 +202,16 @@ Status UseJITLinkIfEnabled(llvm::orc::LLJITBuilder& jit_builder) { static auto maybe_use_jit_link = ::arrow::internal::GetEnvVar("GANDIVA_USE_JIT_LINK"); if (maybe_use_jit_link.ok()) { ARROW_ASSIGN_OR_RAISE(static auto memory_manager, CreateMemmoryManager()); +# if LLVM_VERSION_MAJOR >= 21 + jit_builder.setObjectLinkingLayerCreator([&](llvm::orc::ExecutionSession& ES) { + return std::make_unique(ES, *memory_manager); + }); +# else jit_builder.setObjectLinkingLayerCreator( [&](llvm::orc::ExecutionSession& ES, const llvm::Triple& TT) { return std::make_unique(ES, *memory_manager); }); +# endif } return Status::OK(); } diff --git a/cpp/src/gandiva/llvm_types.h b/cpp/src/gandiva/llvm_types.h index 3541e5e40402..04715391ff14 100644 --- a/cpp/src/gandiva/llvm_types.h +++ b/cpp/src/gandiva/llvm_types.h @@ -56,7 +56,11 @@ class GANDIVA_EXPORT LLVMTypes { llvm::Type* double_type() { return llvm::Type::getDoubleTy(context_); } llvm::PointerType* ptr_type(llvm::Type* type) { +#if LLVM_VERSION_MAJOR >= 21 + return llvm::PointerType::get(context_, 0); +#else return llvm::PointerType::get(type, 0); +#endif } llvm::PointerType* i8_ptr_type() { return ptr_type(i8_type()); }