[arch-commits] Commit in lib32-mesa/trunk (2 files)

Laurent Carlier lcarlier at archlinux.org
Fri May 22 14:17:27 UTC 2020


    Date: Friday, May 22, 2020 @ 14:17:26
  Author: lcarlier
Revision: 631579

upgpkg: lib32-mesa 20.0.7-3: reenable LTO with upstream patch (FS#66666)

Added:
  lib32-mesa/trunk/0001-meson-Disable-GCC-s-dead-store-elimination-for-memor.patch
Modified:
  lib32-mesa/trunk/PKGBUILD

-----------------------------------------------------------------+
 0001-meson-Disable-GCC-s-dead-store-elimination-for-memor.patch |   53 ++++++++++
 PKGBUILD                                                        |   13 ++
 2 files changed, 64 insertions(+), 2 deletions(-)

Added: 0001-meson-Disable-GCC-s-dead-store-elimination-for-memor.patch
===================================================================
--- 0001-meson-Disable-GCC-s-dead-store-elimination-for-memor.patch	                        (rev 0)
+++ 0001-meson-Disable-GCC-s-dead-store-elimination-for-memor.patch	2020-05-22 14:17:26 UTC (rev 631579)
@@ -0,0 +1,53 @@
+From 979ae78318c3e37cc0e0579b8d1f05c46bb76e7d Mon Sep 17 00:00:00 2001
+From: Danylo Piliaiev <danylo.piliaiev at globallogic.com>
+Date: Tue, 19 May 2020 20:35:49 +0300
+Subject: [PATCH] meson: Disable GCC's dead store elimination for memory
+ zeroing custom new
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Some classes use custom new operator which zeroes memory, however gcc does
+aggressive dead-store elimination which threats all writes to the memory
+before the constructor as "dead stores".
+
+For now we disable this optimization.
+
+The new operators in question are declared via:
+ DECLARE_RZALLOC_CXX_OPERATORS
+ DECLARE_LINEAR_ZALLOC_CXX_OPERATORS
+
+The issue was found with lto builds, however there is no guarantee that
+it didn't happen with ordinary ones.
+
+CC: <mesa-stable at lists.freedesktop.org>
+Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2977
+Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/1358
+Signed-off-by: Danylo Piliaiev <danylo.piliaiev at globallogic.com>
+Reviewed-by: Marek Olšák <marek.olsak at amd.com>
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5104>
+(cherry picked from commit 5500a2b7fc558217bbd4c2a966ab6fcadaed8b3b)
+Signed-off-by: Laurent Carlier <lordheavym at gmail.com>
+---
+ meson.build       | 5 +++++
+ 1 files changed, 5 insertions(+), 0 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index ba4fdb2a59f..434684c8bcc 100644
+--- a/meson.build
++++ b/meson.build
+@@ -980,6 +980,11 @@ else
+     '-fno-math-errno',
+     '-fno-trapping-math',
+     '-Qunused-arguments',
++    # Some classes use custom new operator which zeroes memory, however
++    # gcc does aggressive dead-store elimination which threats all writes
++    # to the memory before the constructor as "dead stores".
++    # For now we disable this optimization.
++    '-flifetime-dse=1',
+   ]
+   # MinGW chokes on format specifiers and I can't get it all working
+   if not (cc.get_id() == 'gcc' and host_machine.system() == 'windows')
+-- 
+2.26.2
+

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2020-05-22 14:17:14 UTC (rev 631578)
+++ PKGBUILD	2020-05-22 14:17:26 UTC (rev 631579)
@@ -5,7 +5,7 @@
 pkgbase=lib32-mesa
 pkgname=('lib32-opencl-mesa' 'lib32-vulkan-intel' 'lib32-vulkan-radeon' 'lib32-libva-mesa-driver' 'lib32-mesa-vdpau' 'lib32-mesa')
 pkgver=20.0.7
-pkgrel=2
+pkgrel=3
 arch=('x86_64')
 makedepends=('python-mako' 'lib32-libxml2' 'lib32-expat' 'lib32-libx11' 'xorgproto' 'lib32-libdrm'
              'lib32-libxshmfence' 'lib32-libxxf86vm' 'lib32-libxdamage' 'gcc-multilib' 'lib32-libelf' 'lib32-llvm' 'lib32-libvdpau'
@@ -14,10 +14,12 @@
 url="http://mesa3d.sourceforge.net"
 license=('custom')
 source=(https://mesa.freedesktop.org/archive/mesa-${pkgver}.tar.xz{,.sig}
+		0001-meson-Disable-GCC-s-dead-store-elimination-for-memor.patch
         LICENSE
         crossfile.ini)
 sha512sums=('00baae50f14bf2b08b5654dffb11cf67499dc1825e1700b137fb5719e767e0e78e789979df2c194f677ea9c5e531f34965d47b9e37c239944c38d0570c7a9685'
             'SKIP'
+            '566ad6f4195124b4af05d4bba1e01cc5e9ac466f11ddd900a2f5bfd830aa19cdccb3f9625901340b5fe62e7d8ea50aa336ab5031a658fe90916d847b2e9946e0'
             'f9f0d0ccf166fe6cb684478b6f1e1ab1f2850431c06aa041738563eb1808a004e52cdec823c103c9e180f03ffc083e95974d291353f0220fe52ae6d4897fecc7'
             'c7dbb390ebde291c517a854fcbe5166c24e95206f768cc9458ca896b2253aabd6df12a7becf831998721b2d622d0c02afdd8d519e77dea8e1d6807b35f0166fe')
 validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D'  # Emil Velikov <emil.l.velikov at gmail.com>
@@ -27,6 +29,13 @@
               '71C4B75620BC75708B4BDB254C95FAAB3EB073EC'  # Dylan Baker <dylan at pnwbakers.com>
               '57551DE15B968F6341C248F68D8E31AFC32428A6') # Eric Engestrom <eric at engestrom.ch>
 
+prepare() {
+  cd mesa-$pkgver
+
+  # LTO fix
+  patch -Np1 -i ../0001-meson-Disable-GCC-s-dead-store-elimination-for-memor.patch
+}
+
 build() {
   export CC="gcc -m32"
   export CXX="g++ -m32"
@@ -35,7 +44,7 @@
   arch-meson mesa-$pkgver build \
     --native-file crossfile.ini \
     --libdir=/usr/lib32 \
-    -D b_lto=false \
+    -D b_lto=true \
     -D b_ndebug=true \
     -D platforms=x11,wayland,drm,surfaceless \
     -D dri-drivers=i915,i965,r100,r200,nouveau \


More information about the arch-commits mailing list