[PATCH 2/3] mesa: Fix build with llvm 18

Khem Raj
2024-02-14T20:51:45Z

Backport a relevant patch from mesa 24

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
...-18-remove-useless-passes-partially-.patch | 59 +++++++++++++++++++
meta/recipes-graphics/mesa/mesa.inc | 1 +
2 files changed, 60 insertions(+)
create mode 100644 meta/recipes-graphics/mesa/files/0001-fix-ac-llvm-LLVM-18-remove-useless-passes-partially-.patch

diff --git a/meta/recipes-graphics/mesa/files/0001-fix-ac-llvm-LLVM-18-remove-useless-passes-partially-.patch b/meta/recipes-graphics/mesa/files/0001-fix-ac-llvm-LLVM-18-remove-useless-passes-partially-.patch
new file mode 100644
index 00000000000..9acdb09fc64
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/0001-fix-ac-llvm-LLVM-18-remove-useless-passes-partially-.patch
@@ -0,0 +1,59 @@
+From bc7e363f8e1a26342e6fd7241c1f0ebb722338d6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Kai=20Wasserb=C3=A4ch?= <kai@dev.carbon-project.org>
+Date: Wed, 22 Nov 2023 20:21:11 +0100
+Subject: [PATCH] fix: ac/llvm: LLVM 18: remove useless passes, partially removed upstream
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream removed llvm::createLoopSinkPass() in commit
+<https://github.com/llvm/llvm-project/commit/b9975cec0ea0a2f10d65b7bd1197d9e1706cbd3d>
+and there is no useful alternative except moving to the new pass
+manager.
+
+On top of that, the usage of this optimisation pass and
+PromoteMemoryToRegisterPass were just useless, according to the
+upstream developer of the commit named above. Therefore the easiest
+solution is, as him, Marek and Dave suggested, to just remove these two
+passes from the pipeline for now.
+
+Upstream-Status: Backport [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26336]
+
+Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10192
+Reference: https://github.com/llvm/llvm-project/pull/72811
+Reference: https://github.com/llvm/llvm-project/commit/b9975cec0ea0a2f10d65b7bd1197d9e1706cbd3d
+Suggested-by: Dave Airlie <airlied@redhat.com>
+Suggested-by: Aiden Grossman <agrossman154@yahoo.com>
+Suggested-by: Marek Olšák <maraeo@gmail.com>
+Signed-off-by: Kai Wasserbäch <kai@dev.carbon-project.org>
+Reviewed-by: Marek Olšák <marek.olsak@amd.com>
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26336>
+---
+ src/amd/llvm/ac_llvm_helper.cpp | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/src/amd/llvm/ac_llvm_helper.cpp b/src/amd/llvm/ac_llvm_helper.cpp
+index 40a4399e705..5d065279ad1 100644
+--- a/src/amd/llvm/ac_llvm_helper.cpp
++++ b/src/amd/llvm/ac_llvm_helper.cpp
+@@ -299,17 +299,12 @@ LLVMPassManagerRef ac_create_passmgr(LLVMTargetLibraryInfoRef target_library_inf
+ */
+ unwrap(passmgr)->add(createBarrierNoopPass());
+
+- /* This pass eliminates all loads and stores on alloca'd pointers. */
+- unwrap(passmgr)->add(createPromoteMemoryToRegisterPass());
+ #if LLVM_VERSION_MAJOR >= 16
+ unwrap(passmgr)->add(createSROAPass(true));
+ #else
+ unwrap(passmgr)->add(createSROAPass());
+ #endif
+ /* TODO: restore IPSCCP */
+- if (LLVM_VERSION_MAJOR >= 16)
+- unwrap(passmgr)->add(createLoopSinkPass());
+- /* TODO: restore IPSCCP */
+ unwrap(passmgr)->add(createLICMPass());
+ unwrap(passmgr)->add(createCFGSimplificationPass());
+ /* This is recommended by the instruction combining pass. */
+--
+2.43.0
+
diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc
index fabc52f0e7b..c48f2be31b7 100644
--- a/meta/recipes-graphics/mesa/mesa.inc
+++ b/meta/recipes-graphics/mesa/mesa.inc
@@ -18,6 +18,7 @@ SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \
file://0001-meson.build-check-for-all-linux-host_os-combinations.patch \
file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
file://0001-gallium-Fix-build-with-llvm-17.patch \
+ file://0001-fix-ac-llvm-LLVM-18-remove-useless-passes-partially-.patch \
"

SRC_URI[sha256sum] = "dc7e8c077bc5884df95478263b34bdebb7e88e600689cb56fb07be2b8c304c36"
--
2.43.1