From c0fc25cc204ba0a9ff4e78a2bcc1ebd0d05a995f Mon Sep 17 00:00:00 2001 From: Trevor Gross Date: Thu, 31 Oct 2024 19:29:40 -0500 Subject: [PATCH] =?UTF-8?q?Enable=20`f128`=20tests=20on=20all=20non-buggy?= =?UTF-8?q?=20platforms=20=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With the `compiler-builtins` update to 0.1.137 [1], we now provide symbols necessary to work with `f128` everywhere. This means that we are no longer restricted to 64-bit linux, and can enable tests by default. There are still a handful of platforms that need to remain disabled because of bugs. This patch additionally disables the following: 1. MIPS [2] 2. 32-bit x86 [3] Math support is still off by default since those symbols are not yet available. [1]: https://github.com/rust-lang/rust/pull/132433 [2]: https://github.com/llvm/llvm-project/issues/96432 [3]: https://github.com/llvm/llvm-project/issues/77401 --- library/std/build.rs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/library/std/build.rs b/library/std/build.rs index 032326556bd5b..8dc326a3dde6a 100644 --- a/library/std/build.rs +++ b/library/std/build.rs @@ -122,19 +122,24 @@ fn main() { _ if is_miri => true, // Unsupported ("arm64ec", _) => false, - // ABI and precision bugs - // - ("powerpc" | "powerpc64", _) => false, + // Selection bug + ("mips64" | "mips64r6", _) => false, // Selection bug ("nvptx64", _) => false, + // ABI bugs et al. (full + // list at ) + ("powerpc" | "powerpc64", _) => false, // ABI unsupported ("sparc", _) => false, + // Stack alignment bug . NB: tests may + // not fail if our compiler-builtins is linked. + ("x86", _) => false, // MinGW ABI bugs ("x86_64", "windows") if target_env == "gnu" && target_abi != "llvm" => false, - // 64-bit Linux is about the only platform to have f128 symbols by default - (_, "linux") if target_pointer_width == 64 => true, - // Almost all OSs are missing symbol. compiler-builtins will have to add them. - _ => false, + // There are no known problems on other platforms, so the only requirement is that symbols + // are available. `compiler-builtins` provides all symbols required for core `f128` + // support, so this should work for everything else. + _ => true, }; // Configure platforms that have reliable basics but may have unreliable math.