Skip to content

Commit 78cbe94

Browse files
authored
Support LLVM 21
* support LLVM 21 * typo * Add llvm21 to flake.nix * Add llvm21 to ci.yml
1 parent 8b0a8ff commit 78cbe94

4 files changed

Lines changed: 27 additions & 6 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
fail-fast: false
1616
matrix:
1717
os: [ubuntu-24.04, macos-15]
18-
llvm: [19, 20]
18+
llvm: [19, 20, 21]
1919
name: Build os=${{ matrix.os }} llvm=${{ matrix.llvm }}
2020
runs-on: ${{ matrix.os }}
2121
steps:

expr2/reactor/LLVMJIT.cpp

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ __pragma(warning(push))
3131
#include "llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h"
3232
#include "llvm/ExecutionEngine/SectionMemoryManager.h"
3333

34+
#if LLVM_VERSION_MAJOR >= 21
35+
#include "llvm/ExecutionEngine/Orc/SelfExecutorProcessControl.h"
36+
#endif
37+
3438
#if LLVM_VERSION_MAJOR >= 20
3539
#include "llvm/ExecutionEngine/Orc/AbsoluteSymbols.h"
3640
#endif
@@ -41,6 +45,10 @@ __pragma(warning(push))
4145
#include "llvm/Support/CommandLine.h"
4246
#include "llvm/Support/TargetSelect.h"
4347
#include "llvm/TargetParser/Host.h"
48+
#if LLVM_VERSION_MAJOR >= 21
49+
#include "llvm/TargetParser/Triple.h"
50+
#include "llvm/Support/MemoryBuffer.h"
51+
#endif
4452
#include "llvm/Transforms/InstCombine/InstCombine.h"
4553
#include "llvm/Transforms/Instrumentation/MemorySanitizer.h"
4654
#include "llvm/Transforms/Scalar/ADCE.h"
@@ -749,9 +757,17 @@ class JITRoutine : public rr::Routine
749757
return std::move(*p);
750758
}())
751759
#endif
752-
, objectLayer(session, [this]() {
753-
return std::make_unique<llvm::SectionMemoryManager>(&memoryMapper);
754-
})
760+
, objectLayer(session,
761+
#if LLVM_VERSION_MAJOR >= 21
762+
[this](const llvm::MemoryBuffer &) {
763+
return std::make_unique<llvm::SectionMemoryManager>(&memoryMapper);
764+
}
765+
#else
766+
[this]() {
767+
return std::make_unique<llvm::SectionMemoryManager>(&memoryMapper);
768+
}
769+
#endif
770+
)
755771
, addresses(count)
756772
{
757773
bool fatalCompileIssue = false;
@@ -873,7 +889,11 @@ JITBuilder::JITBuilder(const rr::Config &config)
873889
, module(new llvm::Module("", *context))
874890
, builder(new llvm::IRBuilder<>(*context))
875891
{
892+
#if LLVM_VERSION_MAJOR >= 21
893+
module->setTargetTriple(llvm::Triple(LLVM_DEFAULT_TARGET_TRIPLE));
894+
#else
876895
module->setTargetTriple(LLVM_DEFAULT_TARGET_TRIPLE);
896+
#endif
877897
module->setDataLayout(JITGlobals::get()->getDataLayout());
878898
if (config.getOptimization().getFMF() == Optimization::FMF::FastMath)
879899
builder->setFastMathFlags(llvm::FastMathFlags::getFast());

flake.nix

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
packages = rec {
1818
llvm_19 = pkgs.callPackage ./package.nix {};
1919
llvm_20 = pkgs.callPackage ./package.nix {libllvm = pkgs.llvmPackages_20.libllvm;};
20-
default = llvm_20;
20+
llvm_21 = pkgs.callPackage ./package.nix {libllvm = pkgs.llvmPackages_21.libllvm;};
21+
default = llvm_21;
2122
};
2223

2324
formatter = pkgs.alejandra;

meson.build

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ if use_asmjit
8787
else
8888
sources = sources_common + sources_expr2
8989
incdir += include_directories('expr2/reactor')
90-
deps += dependency('llvm', version: ['>= 10.0', '< 21'], method: 'config-tool', static: static_llvm,
90+
deps += dependency('llvm', version: ['>= 10.0', '< 22'], method: 'config-tool', static: static_llvm,
9191
modules: [
9292
'asmprinter', 'executionengine', 'target', 'orcjit', 'native',
9393
])

0 commit comments

Comments
 (0)