mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2025-01-27 23:44:04 +00:00
community/ldc to 1.20.1-3
This commit is contained in:
parent
5a52fa6a08
commit
26c20b50a5
2 changed files with 69 additions and 9 deletions
|
@ -13,9 +13,9 @@ groups=('dlang' 'dlang-ldc')
|
|||
pkgver=1.20.1
|
||||
_pkgcommit=96437a25c28a2a6fbeb36dc6a46b600e56021051
|
||||
_dversion=2.090.1
|
||||
_clangversion=9.0.1 # related to where ldc2 looks for compiler-rt sanitizers
|
||||
_clangversion=10.0.0 # related to where ldc2 looks for compiler-rt sanitizers
|
||||
epoch=2
|
||||
pkgrel=1
|
||||
pkgrel=3
|
||||
pkgdesc="A D Compiler based on the LLVM Compiler Infrastructure including D runtime and libphobos2"
|
||||
arch=('x86_64')
|
||||
url="https://github.com/ldc-developers/ldc"
|
||||
|
@ -24,25 +24,30 @@ makedepends=('git' 'cmake' 'llvm' 'ldc')
|
|||
|
||||
source=(
|
||||
"git+https://github.com/ldc-developers/ldc#commit=$_pkgcommit"
|
||||
"git+https://github.com/ldc-developers/druntime.git"
|
||||
"git+https://github.com/ldc-developers/phobos.git"
|
||||
"git+https://github.com/ldc-developers/dmd-testsuite.git"
|
||||
"ldc-druntime::git+https://github.com/ldc-developers/druntime.git"
|
||||
"ldc-phobos::git+https://github.com/ldc-developers/phobos.git"
|
||||
"ldc-testsuite::git+https://github.com/ldc-developers/dmd-testsuite.git"
|
||||
"fix-llvm_prefetch-for-LLVM-10.patch"
|
||||
)
|
||||
|
||||
sha256sums=('SKIP'
|
||||
'SKIP'
|
||||
'SKIP'
|
||||
'SKIP')
|
||||
'SKIP'
|
||||
'f123e482402416d262739a21de4c156cc37912c0f796f9d2239607a173680e28')
|
||||
|
||||
prepare() {
|
||||
cd "$srcdir/ldc"
|
||||
|
||||
git submodule init
|
||||
git config submodule.druntime.url "$srcdir/druntime"
|
||||
git config submodule.phobos.url "$srcdir/phobos"
|
||||
git config submodule.tests/d2/dmd-testsuite.url "$srcdir/dmd-testsuite"
|
||||
git config submodule.druntime.url "$srcdir/ldc-druntime"
|
||||
git config submodule.phobos.url "$srcdir/ldc-phobos"
|
||||
git config submodule.tests/d2/dmd-testsuite.url "$srcdir/ldc-testsuite"
|
||||
git submodule update
|
||||
|
||||
# https://github.com/ldc-developers/ldc/issues/3397
|
||||
patch -Np1 -d runtime/druntime <../fix-llvm_prefetch-for-LLVM-10.patch
|
||||
|
||||
# Set version used for path construction in getFullClangCompilerRTLibPath()
|
||||
sed -i "s/ldc::llvm_version_base/\"$_clangversion\"/" driver/linker-gcc.cpp
|
||||
}
|
||||
|
|
55
community/ldc/fix-llvm_prefetch-for-LLVM-10.patch
Normal file
55
community/ldc/fix-llvm_prefetch-for-LLVM-10.patch
Normal file
|
@ -0,0 +1,55 @@
|
|||
diff --git a/src/core/simd.d b/src/core/simd.d
|
||||
index c27dc4c1..7641c8a9 100644
|
||||
--- a/src/core/simd.d
|
||||
+++ b/src/core/simd.d
|
||||
@@ -84,6 +84,20 @@ version (LDC)
|
||||
enum dataCache = 1;
|
||||
llvm_prefetch(address, writeFetch, locality, dataCache);
|
||||
}
|
||||
+
|
||||
+ unittest
|
||||
+ {
|
||||
+ float[4] data = [ 0.5, 1, 1.5, 2 ];
|
||||
+ auto ptr = &data[0];
|
||||
+
|
||||
+ prefetch!(false, 0)(ptr);
|
||||
+ auto v = loadUnaligned!float4(ptr);
|
||||
+ v *= 2;
|
||||
+ storeUnaligned!float4(v, ptr);
|
||||
+
|
||||
+ float[4] expected = [ 1, 2, 3, 4 ];
|
||||
+ assert(data == expected);
|
||||
+ }
|
||||
}
|
||||
else version (D_SIMD)
|
||||
{
|
||||
diff --git a/src/ldc/intrinsics.di b/src/ldc/intrinsics.di
|
||||
index 914cd5e1..091b2aac 100644
|
||||
--- a/src/ldc/intrinsics.di
|
||||
+++ b/src/ldc/intrinsics.di
|
||||
@@ -129,6 +129,14 @@ pragma(LDC_intrinsic, "llvm.stacksave")
|
||||
pragma(LDC_intrinsic, "llvm.stackrestore")
|
||||
void llvm_stackrestore(void* ptr);
|
||||
|
||||
+version(INTRINSICS_FROM_1000)
|
||||
+{
|
||||
+ private enum llvm_prefetch_fullname = "llvm.prefetch.p0i8";
|
||||
+}
|
||||
+else
|
||||
+{
|
||||
+ private enum llvm_prefetch_fullname = "llvm.prefetch";
|
||||
+}
|
||||
/// The 'llvm.prefetch' intrinsic is a hint to the code generator to insert a
|
||||
/// prefetch instruction if supported; otherwise, it is a noop. Prefetches have
|
||||
/// no effect on the behavior of the program but can change its performance
|
||||
@@ -139,8 +147,8 @@ pragma(LDC_intrinsic, "llvm.stackrestore")
|
||||
/// keep in cache. The cache type specifies whether the prefetch is performed on
|
||||
/// the data (1) or instruction (0) cache. The rw, locality and cache type
|
||||
/// arguments must be constant integers.
|
||||
-pragma(LDC_intrinsic, "llvm.prefetch")
|
||||
- void llvm_prefetch(void* ptr, uint rw, uint locality, uint cachetype) pure @safe;
|
||||
+pragma(LDC_intrinsic, llvm_prefetch_fullname)
|
||||
+ void llvm_prefetch(const(void)* ptr, uint rw, uint locality, uint cachetype) pure @safe;
|
||||
|
||||
/// The 'llvm.pcmarker' intrinsic is a method to export a Program Counter (PC)
|
||||
/// in a region of code to simulators and other tools. The method is target
|
Loading…
Reference in a new issue