rebuilt with llvm 14.0.3 [release 2.40.0-2mamba;Mon May 02 2022]

This commit is contained in:
Silvan Calarco 2024-01-05 22:13:37 +01:00
parent b916a23ce5
commit b3f6d3a3b1
2 changed files with 193 additions and 1 deletions

View File

@ -0,0 +1,184 @@
From 1275ec6774e0fb8eaf12fd1cb30b16a08044bcb7 Mon Sep 17 00:00:00 2001
From: Stephane Letz <letz@grame.fr>
Date: Wed, 30 Mar 2022 09:31:01 +0200
Subject: [PATCH] Add support for LLVM 14.
---
compiler/generator/llvm/llvm_dsp_aux.cpp | 4 +-
.../generator/llvm/llvm_dynamic_dsp_aux.cpp | 2 +-
compiler/generator/llvm/llvm_instructions.hh | 77 ++++++++-----------
3 files changed, 35 insertions(+), 48 deletions(-)
diff --git a/compiler/generator/llvm/llvm_dsp_aux.cpp b/compiler/generator/llvm/llvm_dsp_aux.cpp
index 1d08a1be2a..232aef616c 100644
--- a/compiler/generator/llvm/llvm_dsp_aux.cpp
+++ b/compiler/generator/llvm/llvm_dsp_aux.cpp
@@ -116,7 +116,7 @@ void llvm_dsp_factory_aux::startLLVMLibrary()
{
if (llvm_dsp_factory_aux::gInstance++ == 0) {
// Install the LLVM error handler
- #if defined(__APPLE__) && LLVM_VERSION_MAJOR == 13
+ #if defined(__APPLE__) && LLVM_VERSION_MAJOR >= 11
#warning Crash on OSX so deactivated in this case
#else
LLVMInstallFatalErrorHandler(llvm_dsp_factory_aux::LLVMFatalErrorHandler);
@@ -128,7 +128,7 @@ void llvm_dsp_factory_aux::stopLLVMLibrary()
{
if (--llvm_dsp_factory_aux::gInstance == 0) {
// Remove the LLVM error handler
- #if defined(__APPLE__) && (LLVM_VERSION_MAJOR >= 11 && LLVM_VERSION_MAJOR <= 13)
+ #if defined(__APPLE__) && LLVM_VERSION_MAJOR >= 11
#warning Crash on OSX so deactivated in this case
#else
LLVMResetFatalErrorHandler();
diff --git a/compiler/generator/llvm/llvm_dynamic_dsp_aux.cpp b/compiler/generator/llvm/llvm_dynamic_dsp_aux.cpp
index 60a71df70f..3e5c30bf8e 100644
--- a/compiler/generator/llvm/llvm_dynamic_dsp_aux.cpp
+++ b/compiler/generator/llvm/llvm_dynamic_dsp_aux.cpp
@@ -65,7 +65,7 @@
#include <llvm/Bitcode/BitcodeWriter.h>
// Disappears in LLVM 15
-#if LLVM_VERSION_MAJOR >= 15
+#if LLVM_VERSION_MAJOR >= 14
#include <llvm/MC/TargetRegistry.h>
#else
#include <llvm/Support/TargetRegistry.h>
diff --git a/compiler/generator/llvm/llvm_instructions.hh b/compiler/generator/llvm/llvm_instructions.hh
index 91ead36d37..c092db8c64 100644
--- a/compiler/generator/llvm/llvm_instructions.hh
+++ b/compiler/generator/llvm/llvm_instructions.hh
@@ -57,7 +57,16 @@ using namespace llvm;
#define MakeIdx(beg, end) llvm::ArrayRef<LLVMValue>(beg, end)
#define MakeArgs(args) llvm::ArrayRef<lLLVMValue>(args)
+#if LLVM_VERSION_MAJOR >= 14
+#define GetType(ptr) ptr->getType()->getScalarType()->getPointerElementType()
+#define MakeStructGEP(v1, v2) fBuilder->CreateStructGEP(GetType(v1), v1, v2);
+#define MyCreateLoad(var, is_volatile) fBuilder->CreateLoad(GetType(var), var, is_volatile)
+#define MyCreateLoad1(var) fBuilder->CreateLoad(GetType(var), var)
+#else
#define MakeStructGEP(v1, v2) fBuilder->CreateStructGEP(v1, v2);
+#define MyCreateLoad(var, is_volatile) fBuilder->CreateLoad(var, is_volatile)
+#define MyCreateLoad1(var) fBuilder->CreateLoad(var)
+#endif
#define MakeConstGEP32(type_def, llvm_name) fBuilder->CreateConstGEP2_32(type_def, llvm_name, 0, 0);
#define MakeIntPtrType() fModule->getDataLayout().getIntPtrType(fModule->getContext())
@@ -284,42 +293,32 @@ class LLVMInstVisitor : public InstVisitor, public LLVMTypeHelper {
LLVMValue loadStructVarAddress(const string& name)
{
-#if LLVM_VERSION_MAJOR >= 15
-#warning FIXME
- faustassert(false);
- return {};
-#else
return MakeStructGEP(loadFunArg("dsp"), fStructVisitor->getFieldIndex(name));
-#endif
}
LLVMValue loadStructArrayVarAddress(const string& name)
{
-#if LLVM_VERSION_MAJOR >= 15
-#warning FIXME
- faustassert(false);
- return {};
-#else
int field_index = fStructVisitor->getFieldIndex(name);
LLVMValue idx[] = {genInt32(0), genInt32(field_index)};
+ #if LLVM_VERSION_MAJOR >= 14
+ return fBuilder->CreateInBoundsGEP(GetType(loadFunArg("dsp")), loadFunArg("dsp"), MakeIdx(idx, idx + 2));
+ #else
return fBuilder->CreateInBoundsGEP(loadFunArg("dsp"), MakeIdx(idx, idx + 2));
-#endif
+ #endif
}
- LLVMValue loadArrayAsPointer(LLVMValue variable, bool is_volatile = false)
+ LLVMValue loadArrayAsPointer(LLVMValue var, bool is_volatile = false)
{
-#if LLVM_VERSION_MAJOR >= 15
-#warning FIXME
- faustassert(false);
- return {};
-#else
- if (isa<ArrayType>(variable->getType()->getPointerElementType())) {
+ if (isa<ArrayType>(var->getType()->getPointerElementType())) {
LLVMValue idx[] = {genInt32(0), genInt32(0)};
- return fBuilder->CreateInBoundsGEP(variable, MakeIdx(idx, idx + 2));
+ #if LLVM_VERSION_MAJOR >= 14
+ return fBuilder->CreateInBoundsGEP(GetType(var), var, MakeIdx(idx, idx + 2));
+ #else
+ return fBuilder->CreateInBoundsGEP(var, MakeIdx(idx, idx + 2));
+ #endif
} else {
- return fBuilder->CreateLoad(variable, is_volatile);
+ return MyCreateLoad(var, is_volatile);
}
-#endif
}
LLVMValue loadFunArg(const string& name)
@@ -583,19 +582,21 @@ class LLVMInstVisitor : public InstVisitor, public LLVMTypeHelper {
return nullptr;
}
-#if LLVM_VERSION_MAJOR >= 15
-#warning FIXME
- faustassert(false);
- return {};
-#else
// Indexed adresses can actually be values in an array or fields in a struct type
if (isStructType(indexed_address->getName())) {
LLVMValue idx[] = {genInt32(0), fCurValue};
+ #if LLVM_VERSION_MAJOR >= 14
+ return fBuilder->CreateInBoundsGEP(GetType(load_ptr), load_ptr, MakeIdx(idx, idx + 2));
+ #else
return fBuilder->CreateInBoundsGEP(load_ptr, MakeIdx(idx, idx + 2));
+ #endif
} else {
+ #if LLVM_VERSION_MAJOR >= 14
+ return fBuilder->CreateInBoundsGEP(GetType(load_ptr), load_ptr, fCurValue);
+ #else
return fBuilder->CreateInBoundsGEP(load_ptr, fCurValue);
+ #endif
}
-#endif
}
virtual LLVMValue visit(Address* address)
@@ -630,14 +631,8 @@ class LLVMInstVisitor : public InstVisitor, public LLVMTypeHelper {
fCurValue = loadArrayAsPointer(visit(inst->fAddress), named_address->fAccess & Address::kVolatile);
}
} else if (indexed_address) {
-
-#if LLVM_VERSION_MAJOR >= 15
-#warning FIXME
- faustassert(false);
- return;
-#else
- fCurValue = fBuilder->CreateLoad(visit(inst->fAddress));
-#endif
+ Value* Ptr = visit(inst->fAddress);
+ fCurValue = MyCreateLoad1(Ptr);
} else {
faustassert(false);
}
@@ -985,15 +980,7 @@ class LLVMInstVisitor : public InstVisitor, public LLVMTypeHelper {
// Emit merge block
function->getBasicBlockList().push_back(merge_block);
fBuilder->SetInsertPoint(merge_block);
-
-#if LLVM_VERSION_MAJOR >= 15
-#warning FIXME
- faustassert(false);
- return;
-#else
- // Load result in fCurValue
- fCurValue = fBuilder->CreateLoad(typed_res);
-#endif
+ fCurValue = MyCreateLoad1(typed_res);
}
virtual void visit(IfInst* inst)

View File

@ -1,6 +1,6 @@
Name: faust Name: faust
Version: 2.40.0 Version: 2.40.0
Release: 1mamba Release: 2mamba
Summary: Functional programming language for signal processing and sound synthesis Summary: Functional programming language for signal processing and sound synthesis
Group: Applications/Development Group: Applications/Development
Vendor: openmamba Vendor: openmamba
@ -11,19 +11,23 @@ Source: https://github.com/grame-cncm/faust/releases/download/%{version}/
Patch0: faust-2.30.5-llvm-11.1.0.patch Patch0: faust-2.30.5-llvm-11.1.0.patch
Patch1: faust-2.30.5-missing-include-limits.patch Patch1: faust-2.30.5-missing-include-limits.patch
Patch2: faust-2.30.5-sound2file-missing-include-limits.patch Patch2: faust-2.30.5-sound2file-missing-include-limits.patch
Patch3: faust-2.40.0-llvm-14.0.3.patch
License: GPL License: GPL
## AUTOBUILDREQ-BEGIN ## AUTOBUILDREQ-BEGIN
BuildRequires: glibc-devel BuildRequires: glibc-devel
BuildRequires: libflac-devel BuildRequires: libflac-devel
BuildRequires: libgcc BuildRequires: libgcc
BuildRequires: liblame-devel
BuildRequires: libllvm-devel BuildRequires: libllvm-devel
BuildRequires: libmicrohttpd-devel BuildRequires: libmicrohttpd-devel
BuildRequires: libmpg123-devel
BuildRequires: libogg-devel BuildRequires: libogg-devel
BuildRequires: libopus-devel BuildRequires: libopus-devel
BuildRequires: libsndfile-devel BuildRequires: libsndfile-devel
BuildRequires: libstdc++6-devel BuildRequires: libstdc++6-devel
BuildRequires: libvorbis-devel BuildRequires: libvorbis-devel
## AUTOBUILDREQ-END ## AUTOBUILDREQ-END
BuildRequires: libllvm-devel >= 14.0.3
Requires: lib%{name} = %{?epoch:%epoch:}%{version}-%{release} Requires: lib%{name} = %{?epoch:%epoch:}%{version}-%{release}
%description %description
@ -55,6 +59,7 @@ This package contains libraries and header files for developing applications tha
#%patch0 -p1 #%patch0 -p1
#%patch1 -p1 #%patch1 -p1
%patch2 -p1 %patch2 -p1
%patch3 -p1 -b .llvm-14.0.3
%build %build
#:<< _EOF #:<< _EOF
@ -134,6 +139,9 @@ rm -f %{buildroot}%{_datadir}/faust/max-msp/sndfile/*/libsndfile.a
%changelog %changelog
* Mon May 02 2022 Silvan Calarco <silvan.calarco@mambasoft.it> 2.40.0-2mamba
- rebuilt with llvm 14.0.3
* Wed Apr 13 2022 Automatic Build System <autodist@mambasoft.it> 2.40.0-1mamba * Wed Apr 13 2022 Automatic Build System <autodist@mambasoft.it> 2.40.0-1mamba
- automatic version update by autodist - automatic version update by autodist