- Package:
- src:llvm-toolchain-21
- Source:
- src:llvm-toolchain-21
- Submitter:
- Fabian Grünbichler
- Date:
- 2026-03-13 17:47:02 UTC
- Severity:
- normal
- Tags:
Hi! I've been trying to backport llvm-toolchain-21 for Trixie for the past few weeks, because it is a requirement for backporting newer rustc versions. Unfortunately the build fails with floating point related errors. Those errors go away if I set -DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=ON , but that is the wrong thing to do on Trixie which generally lacks IEEE long double.. I've tried various things, and ended up bisecting upstream LLVM which points at 8437b7f5584765ad4f7885500647657714930fbb. That commit allegedly got fixed[0], but the fix seems incomplete (since it is included in 21.1.8 and that is still broken). I've now filed an issue[1] and PR[2] upstream after verifying that upstream main is also affected. I'd appreciate input upstream from ppc experts, in particular whether my proposed changes (which do fix the package build when backporting to Trixie!) seem reasonable. Thanks, Fabian 0: https://github.com/llvm/llvm-project/issues/136596 1: https://github.com/llvm/llvm-project/issues/184994 2: https://github.com/llvm/llvm-project/issues/184995
Hi Fabian, Thank you for the detailed analysis and for filing the upstream issue. I'm looking into this from the ppc64el porter side and will test your proposed fix in commit 133f997 (https://github.com/llvm/llvm-project/pull/184995/changes/133f997099485bdd326d4941addc4082509be553) the missing uint128.h include and parser.h fix. Will follow up once I've confirmed results on ppc64el. The direction of 133f997 looks correct — it completes what PR https://github.com/llvm/llvm-project/pull/136614 left incomplete without the ABI risk of -DPPC_LINUX_DEFAULT_IEEELONGDOUBLE=ON. Thanks, Trupti
Hi Fabin,
As a quick update, I was able to reproduce the issue on ppc64el with
Trixie. With below errors:
/build/reproducible-path/llvm-toolchain-21-21.1.8/cmake/Modules/../../libc/src/stdio/printf_core/float_hex_converter.h:43:30:
error: no member named 'is_neg' in
'__llvm_libc_common_utils::fputil::FPBits<long double>'
43 | is_negative = float_bits.is_neg();
| ~~~~~~~~~~ ^
/build/reproducible-path/llvm-toolchain-21-21.1.8/cmake/Modules/../../libc/src/stdio/printf_core/float_hex_converter.h:44:27:
error: no member named 'get_explicit_exponent' in
'__llvm_libc_common_utils::fputil::FPBits<long double>'
44 | exponent = float_bits.get_explicit_exponent();
| ~~~~~~~~~~ ^
/build/reproducible-path/llvm-toolchain-21-21.1.8/cmake/Modules/../../libc/src/stdio/printf_core/float_hex_converter.h:45:27:
error: no member named 'get_explicit_mantissa' in
'__llvm_libc_common_utils::fputil::FPBits<long double>'
45 | mantissa = float_bits.get_explicit_mantissa();
| ~~~~~~~~~~ ^
/build/reproducible-path/llvm-toolchain-21-21.1.8/cmake/Modules/../../libc/src/stdio/printf_core/float_hex_converter.h:46:32:
error: no member named 'is_inf_or_nan' in
'__llvm_libc_common_utils::fputil::FPBits<long double>'
46 | is_inf_or_nan = float_bits.is_inf_or_nan();
| ~~~~~~~~~~ ^
/build/reproducible-path/llvm-toolchain-21-21.1.8/cmake/Modules/../../libc/src/stdio/printf_core/float_hex_converter.h:87:16:
error: no member named 'FRACTION_LEN' in
'__llvm_libc_common_utils::fputil::FPBits<long double>'
87 | (LDBits::FRACTION_LEN / BITS_IN_HEX_DIGIT) + 1;
| ^~~~~~~~~~~~
/build/reproducible-path/llvm-toolchain-21-21.1.8/cmake/Modules/../../libc/src/stdio/printf_core/float_hex_converter.h:88:20:
warning: variable length arrays in C++ are a Clang extension
[-Wvla-cxx-extension]
88 | char mant_buffer[MANT_BUFF_LEN];
| ^~~~~~~~~~~~~
/build/reproducible-path/llvm-toolchain-21-21.1.8/cmake/Modules/../../libc/src/stdio/printf_core/float_hex_converter.h:88:20:
note: initializer of 'MANT_BUFF_LEN' is unknown
/build/reproducible-path/llvm-toolchain-21-21.1.8/cmake/Modules/../../libc/src/stdio/printf_core/float_hex_converter.h:86:20:
note: declared here
86 | constexpr size_t MANT_BUFF_LEN =
| ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
I'm currently testing the build with your suggested patches from
https://github.com/llvm/llvm-project/pull/184995
I'm also discussing this with PowerPC toolchain experts to better
understand
if there are any implications from the PPC side.
I will update here once I have more information.
Thanks,
Trupti
much rejected, but some alternatives were suggested in the review discussion in the PR. I am not sure yet how to proceed: - upload llvm-toolchain-21 with ppc64el FTBFS, followed by rustc 1.91, then fixing llvm-toolchain-21 and rebuilding rustc - wait for the fix, potentially skip rustc 1.91 if that works, or arguing for an exception to allow uploading rustc 1.91 to bpo despite forky already having 1.92 by that time.. Fabian