Skip to content

Commit aef25be

Browse files
nathanchancetorvalds
authored andcommitted
hexagon: Disable constant extender optimization for LLVM prior to 19.1.0
The Hexagon-specific constant extender optimization in LLVM may crash on Linux kernel code [1], such as fs/bcache/btree_io.c after commit 32ed4a6 ("bcachefs: Btree path tracepoints") in 6.12: clang: llvm/lib/Target/Hexagon/HexagonConstExtenders.cpp:745: bool (anonymous namespace)::HexagonConstExtenders::ExtRoot::operator<(const HCE::ExtRoot &) const: Assertion `ThisB->getParent() == OtherB->getParent()' failed. Stack dump: 0. Program arguments: clang --target=hexagon-linux-musl ... fs/bcachefs/btree_io.c 1. <eof> parser at end of file 2. Code generation 3. Running pass 'Function Pass Manager' on module 'fs/bcachefs/btree_io.c'. 4. Running pass 'Hexagon constant-extender optimization' on function '@__btree_node_lock_nopath' Without assertions enabled, there is just a hang during compilation. This has been resolved in LLVM main (20.0.0) [2] and backported to LLVM 19.1.0 but the kernel supports LLVM 13.0.1 and newer, so disable the constant expander optimization using the '-mllvm' option when using a toolchain that is not fixed. Cc: [email protected] Link: llvm/llvm-project#99714 [1] Link: llvm/llvm-project@68df06a [2] Link: llvm/llvm-project@2ab8d93 [3] Reviewed-by: Brian Cain <[email protected]> Signed-off-by: Nathan Chancellor <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
1 parent 5529876 commit aef25be

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

arch/hexagon/Makefile

+6
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,9 @@ KBUILD_LDFLAGS += $(ldflags-y)
3232
TIR_NAME := r19
3333
KBUILD_CFLAGS += -ffixed-$(TIR_NAME) -DTHREADINFO_REG=$(TIR_NAME) -D__linux__
3434
KBUILD_AFLAGS += -DTHREADINFO_REG=$(TIR_NAME)
35+
36+
# Disable HexagonConstExtenders pass for LLVM versions prior to 19.1.0
37+
# https://github.com/llvm/llvm-project/issues/99714
38+
ifneq ($(call clang-min-version, 190100),y)
39+
KBUILD_CFLAGS += -mllvm -hexagon-cext=false
40+
endif

0 commit comments

Comments
 (0)