git: a58eb6653223 - stable/13 - libzpool: add workaround for MIPS-specific llvm bug compiling arc.c
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 01 Dec 2024 12:54:37 UTC
The branch stable/13 has been updated by dim:
URL: https://cgit.FreeBSD.org/src/commit/?id=a58eb6653223494cce02faf85d3a49110743b9fc
commit a58eb6653223494cce02faf85d3a49110743b9fc
Author: Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2024-12-01 12:52:42 +0000
Commit: Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2024-12-01 12:52:42 +0000
libzpool: add workaround for MIPS-specific llvm bug compiling arc.c
This works around an assertion in llvm's shrink wrapping analysis pass,
when compiling arc.c for mips and mips64:
Assertion failed: (PhysReg.isPhysical() && "Unallocated register?!"), function useOrDefCSROrFI, file /usr/src/contrib/llvm-project/llvm/lib/CodeGen/ShrinkWrap.cpp, line 341.
The bug will also be submitted upstream.
Direct commit to stable/13, since MIPS support was removed in 14.0.
---
cddl/lib/libzpool/Makefile | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/cddl/lib/libzpool/Makefile b/cddl/lib/libzpool/Makefile
index 38490d9cff71..cd9f893c426f 100644
--- a/cddl/lib/libzpool/Makefile
+++ b/cddl/lib/libzpool/Makefile
@@ -265,4 +265,12 @@ CFLAGS.zfs_zstd.c= -Wno-cast-qual -Wno-pointer-arith
CFLAGS.zstd.c+= -fno-tree-vectorize
CFLAGS.zstd.c+= ${NO_WBITWISE_INSTEAD_OF_LOGICAL}
+.include <bsd.compiler.mk>
+
+.if ${MACHINE_CPUARCH} == "mips" && \
+ ${COMPILER_TYPE} == "clang" && ${COMPILER_VERSION} >= 190000
+# Work around MIPS-specific llvm bug in the Shrink Wrapping analysis pass
+CFLAGS.arc.c+= -mllvm -enable-shrink-wrap-region-split=false
+.endif
+
.include <bsd.lib.mk>