[arch-commits] Commit in ldc/repos (3 files)

Evangelos Foutras foutrelis at archlinux.org
Mon Oct 12 17:11:06 UTC 2020


    Date: Monday, October 12, 2020 @ 17:11:06
  Author: foutrelis
Revision: 723685

archrelease: copy trunk to community-staging-x86_64

Added:
  ldc/repos/community-staging-x86_64/
  ldc/repos/community-staging-x86_64/PKGBUILD
    (from rev 723684, ldc/trunk/PKGBUILD)
  ldc/repos/community-staging-x86_64/fix-llvm_prefetch-for-LLVM-10.patch
    (from rev 723684, ldc/trunk/fix-llvm_prefetch-for-LLVM-10.patch)

-------------------------------------+
 PKGBUILD                            |  108 ++++++++++++++++++++++++++++++++++
 fix-llvm_prefetch-for-LLVM-10.patch |   55 +++++++++++++++++
 2 files changed, 163 insertions(+)

Copied: ldc/repos/community-staging-x86_64/PKGBUILD (from rev 723684, ldc/trunk/PKGBUILD)
===================================================================
--- community-staging-x86_64/PKGBUILD	                        (rev 0)
+++ community-staging-x86_64/PKGBUILD	2020-10-12 17:11:06 UTC (rev 723685)
@@ -0,0 +1,108 @@
+# Maintainer: Dan Printzell <arch at vild.io>
+# Contributor: Mihails Strasuns <public at dicebot.lv>
+# Contributor: Sven-Hendrik Haase <sh at lutzhaase.com>
+
+pkgname=('ldc' 'liblphobos')
+groups=('dlang' 'dlang-ldc')
+pkgver=1.23.0
+_pkgcommit=a83dc56ad5a6ba87023756c05b54b5824053da96
+_dversion=2.093.1
+_clangversion=10.0.1 # related to where ldc2 looks for compiler-rt sanitizers
+epoch=2
+pkgrel=2
+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"
+license=('BSD')
+makedepends=('git' 'cmake' 'llvm10' 'ldc')
+
+source=(
+    "git+https://github.com/ldc-developers/ldc#commit=$_pkgcommit"
+    "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"
+)
+
+sha256sums=('SKIP'
+            'SKIP'
+            'SKIP'
+            'SKIP')
+
+prepare() {
+    cd "$srcdir/ldc"
+
+    git submodule init
+    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
+
+    # Set version used for path construction in getFullClangCompilerRTLibPath()
+    sed -i "s/ldc::llvm_version_base/\"$_clangversion\"/" driver/linker-gcc.cpp
+}
+
+build() {
+    cd "$srcdir/ldc"
+
+    mkdir -p build && cd build
+
+    cmake \
+    -DCMAKE_INSTALL_PREFIX=/usr \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DCMAKE_SKIP_RPATH=ON \
+    -DINCLUDE_INSTALL_DIR=/usr/include/dlang/ldc \
+    -DBUILD_SHARED_LIBS=BOTH \
+    -DBUILD_LTO_LIBS=ON \
+    -DLDC_WITH_LLD=OFF \
+    -DD_COMPILER_FLAGS="-link-defaultlib-shared=false -linker=gold -flto=full" \
+    -DADDITIONAL_DEFAULT_LDC_SWITCHES="\"-link-defaultlib-shared\"" \
+    ..
+    make
+}
+
+check() {
+    cd "$srcdir/ldc/build"
+    make all-test-runners
+}
+
+package_ldc() {
+    depends=('liblphobos' 'llvm10-libs' 'gcc' 'compiler-rt')
+    backup=('etc/ldc2.conf')
+    provides=("d-compiler=$_dversion")
+
+    cd "$srcdir/ldc/build"
+    make install DESTDIR="$pkgdir"
+
+    # move bash-completion
+    mkdir -p "$pkgdir/usr/share/bash-completion/completions/"
+    mv "$pkgdir/etc/bash_completion.d/ldc2" "$pkgdir/usr/share/bash-completion/completions/"
+    rm -rf "$pkgdir/etc/bash_completion.d"
+
+    # remove liblphobos files
+    rm -rf "$pkgdir/usr/include"
+    rm -rf "$pkgdir/usr/lib"
+
+    # symlinks
+    ln -s /usr/share/bash-completion/completions/ldc2 "$pkgdir/usr/share/bash-completion/completions/ldc"
+    ln -s /usr/bin/ldc2 "$pkgdir/usr/bin/ldc"
+    ln -s /usr/bin/ldmd2 "$pkgdir/usr/bin/ldmd"
+
+    # licenses
+    install -D -m644 "$srcdir/ldc/LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
+
+package_liblphobos() {
+    provides=('d-runtime' 'd-stdlib')
+    depends=('curl')
+    options=('staticlibs')
+
+    cd "$srcdir/ldc/build"
+    make install DESTDIR="$pkgdir"
+
+    # remove ldc files
+    rm -rf "$pkgdir/usr/bin/"
+    rm -rf "$pkgdir/etc/"
+
+    # licenses
+    install -D -m644 "$srcdir/ldc/LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}

Copied: ldc/repos/community-staging-x86_64/fix-llvm_prefetch-for-LLVM-10.patch (from rev 723684, ldc/trunk/fix-llvm_prefetch-for-LLVM-10.patch)
===================================================================
--- community-staging-x86_64/fix-llvm_prefetch-for-LLVM-10.patch	                        (rev 0)
+++ community-staging-x86_64/fix-llvm_prefetch-for-LLVM-10.patch	2020-10-12 17:11:06 UTC (rev 723685)
@@ -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



More information about the arch-commits mailing list