public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
To: git-commits@fedoraproject.org
Subject: [rpms/lfortran] epel10: Add support for LLVM 21
Date: Thu, 16 Jul 2026 14:32:08 GMT [thread overview]
Message-ID: <178421232828.1.2887718746419262768.rpms-lfortran-74e2918672ab@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/lfortran
Branch : epel10
Commit : 74e2918672ab9be97199e38ac000749ba375a3c5
Author : Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date : 2025-09-22T22:55:52-04:00
Stats : +102/-1 in 2 file(s)
URL : https://src.fedoraproject.org/rpms/lfortran/c/74e2918672ab9be97199e38ac000749ba375a3c5?branch=epel10
Log:
Add support for LLVM 21
And also rebuild for xeus SONAME bump.
---
diff --git a/8611.patch b/8611.patch
new file mode 100644
index 0000000..2203d78
--- /dev/null
+++ b/8611.patch
@@ -0,0 +1,94 @@
+From 2f674c3cc9e37f1dc3377f378fdde128479a81fe Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ond=C5=99ej=20=C4=8Cert=C3=ADk?= <ondrej@certik.us>
+Date: Mon, 22 Sep 2025 19:25:11 -0600
+Subject: [PATCH] Fix the build for LLVM 21
+
+It builds locally for me and tests pass. This PR does not update any CI yet, if
+everything still works for LLVM 10-20, then we'll merge and in a subsequent PR
+we'll enable CI testing and fix any issues.
+---
+ src/libasr/codegen/KaleidoscopeJIT.h | 9 +++++++++
+ src/libasr/codegen/evaluator.cpp | 16 ++++++++++++++++
+ 2 files changed, 25 insertions(+)
+
+diff --git a/src/libasr/codegen/KaleidoscopeJIT.h b/src/libasr/codegen/KaleidoscopeJIT.h
+index 250dd3dfce..1fc7da3020 100644
+--- a/src/libasr/codegen/KaleidoscopeJIT.h
++++ b/src/libasr/codegen/KaleidoscopeJIT.h
+@@ -30,6 +30,10 @@
+ #include "llvm/ExecutionEngine/Orc/ExecutorProcessControl.h"
+ #endif
+
++#if LLVM_VERSION_MAJOR >= 21
++#include "llvm/ExecutionEngine/Orc/SelfExecutorProcessControl.h"
++#endif
++
+ #if LLVM_VERSION_MAJOR >= 16
+ # define RM_OPTIONAL_TYPE std::optional
+ #else
+@@ -53,8 +57,13 @@ class KaleidoscopeJIT {
+ KaleidoscopeJIT(std::unique_ptr<ExecutionSession> ES, JITTargetMachineBuilder JTMB, DataLayout DL)
+ :
+ ES(std::move(ES)),
++#if LLVM_VERSION_MAJOR >= 21
++ ObjectLayer(*this->ES,
++ [](const llvm::MemoryBuffer &) { return std::make_unique<SectionMemoryManager>(); }),
++#else
+ ObjectLayer(*this->ES,
+ []() { return std::make_unique<SectionMemoryManager>(); }),
++#endif
+ CompileLayer(*this->ES, ObjectLayer, std::make_unique<ConcurrentIRCompiler>(std::move(JTMB))),
+ DL(std::move(DL)), Mangle(*this->ES, this->DL),
+ JITDL(
+diff --git a/src/libasr/codegen/evaluator.cpp b/src/libasr/codegen/evaluator.cpp
+index b5fe0d2fa1..93a6b36048 100644
+--- a/src/libasr/codegen/evaluator.cpp
++++ b/src/libasr/codegen/evaluator.cpp
+@@ -272,7 +272,11 @@ std::unique_ptr<llvm::Module> LLVMEvaluator::parse_module(const std::string &sou
+ if (v) {
+ throw LCompilersException("parse_module(): module failed verification.");
+ };
++#if LLVM_VERSION_MAJOR >= 21
++ module->setTargetTriple(llvm::Triple(target_triple));
++#else
+ module->setTargetTriple(target_triple);
++#endif
+ module->setDataLayout(jit->getDataLayout());
+ return module;
+ }
+@@ -297,7 +301,11 @@ void LLVMEvaluator::add_module(const std::string &source) {
+ void LLVMEvaluator::add_module(std::unique_ptr<llvm::Module> mod) {
+ // These are already set in parse_module(), but we set it here again for
+ // cases when the Module was constructed directly, not via parse_module().
++#if LLVM_VERSION_MAJOR >= 21
++ mod->setTargetTriple(llvm::Triple(target_triple));
++#else
+ mod->setTargetTriple(target_triple);
++#endif
+ mod->setDataLayout(jit->getDataLayout());
+ llvm::Error err = jit->addModule(std::move(mod), context);
+ if (err) {
+@@ -379,7 +387,11 @@ void LLVMEvaluator::save_asm_file(llvm::Module &m, const std::string &filename)
+ }
+
+ void LLVMEvaluator::save_object_file(llvm::Module &m, const std::string &filename) {
++#if LLVM_VERSION_MAJOR >= 21
++ m.setTargetTriple(llvm::Triple(target_triple));
++#else
+ m.setTargetTriple(target_triple);
++#endif
+ m.setDataLayout(TM->createDataLayout());
+
+ llvm::legacy::PassManager pass;
+@@ -407,7 +419,11 @@ void LLVMEvaluator::create_empty_object_file(const std::string &filename) {
+ }
+
+ void LLVMEvaluator::opt(llvm::Module &m) {
++#if LLVM_VERSION_MAJOR >= 21
++ m.setTargetTriple(llvm::Triple(target_triple));
++#else
+ m.setTargetTriple(target_triple);
++#endif
+ m.setDataLayout(TM->createDataLayout());
+
+ #if LLVM_VERSION_MAJOR >= 17
diff --git a/lfortran.spec b/lfortran.spec
index 0ee4729..310522d 100644
--- a/lfortran.spec
+++ b/lfortran.spec
@@ -1,6 +1,6 @@
Version: 0.56.0
Name: lfortran
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: A modern Fortran compiler
# Main code is BSD-3-Clause
@@ -9,6 +9,9 @@ Summary: A modern Fortran compiler
License: BSD-3-Clause AND Apache-2.0 WITH LLVM-exception
URL: https://lfortran.org/
Source0: https://github.com/lfortran/lfortran/releases/download/v%{version}/lfortran-%{version}.tar.gz
+# Add support for LLVM 21
+Patch: https://github.com/lfortran/lfortran/pull/8611.patch
+
# https://github.com/lfortran/lfortran/issues/2981
ExclusiveArch: x86_64
@@ -155,6 +158,10 @@ This package contains the jupyter kernel for %{name}.
%endif
%changelog
+* Mon Sep 22 2025 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.56.0-2
+- Add support for LLVM 21
+- Rebuild for xeus SONAME bump
+
* Mon Aug 18 2025 Packit <hello@packit.dev> - 0.56.0-1
- Update to version 0.56.0
- Resolves: rhbz#2389120
reply other threads:[~2026-07-16 14:32 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178421232828.1.2887718746419262768.rpms-lfortran-74e2918672ab@fedoraproject.org \
--to=quantum.analyst@gmail.com \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox