diff options
| author | Trevor Gross <tmgross@umich.edu> | 2025-03-01 23:05:19 +0000 |
|---|---|---|
| committer | Trevor Gross <tmgross@umich.edu> | 2025-03-01 23:10:21 +0000 |
| commit | c51b229140c885cac757a405a328a07e90d5bca9 (patch) | |
| tree | ce45cb5bcb7426d57a288f4cf6ca4fa4ad264b1e | |
| parent | 8c392966a013fd8a09e6b78b3c8d6e442bc278e1 (diff) | |
| download | rust-c51b229140c885cac757a405a328a07e90d5bca9.tar.gz rust-c51b229140c885cac757a405a328a07e90d5bca9.zip | |
Disable `f16` on Aarch64 without `neon`
LLVM has crashes at some `half` operations when built with assertions enabled if fp-armv8 is not available [1]. Things seem to usually work, but we are reaching LLVM undefined behavior so this needs to be disabled. [1]: https://github.com/llvm/llvm-project/issues/129394
| -rw-r--r-- | library/std/build.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/library/std/build.rs b/library/std/build.rs index 723d1eb02e0..9df35ce3cc8 100644 --- a/library/std/build.rs +++ b/library/std/build.rs @@ -12,6 +12,11 @@ fn main() { .expect("CARGO_CFG_TARGET_POINTER_WIDTH was not set") .parse() .unwrap(); + let target_features: Vec<_> = env::var("CARGO_CFG_TARGET_FEATURE") + .unwrap_or_default() + .split(",") + .map(ToOwned::to_owned) + .collect(); let is_miri = env::var_os("CARGO_CFG_MIRI").is_some(); println!("cargo:rustc-check-cfg=cfg(netbsd10)"); @@ -101,6 +106,8 @@ fn main() { ("s390x", _) => false, // Unsupported <https://github.com/llvm/llvm-project/issues/94434> ("arm64ec", _) => false, + // LLVM crash <https://github.com/llvm/llvm-project/issues/129394> + ("aarch64", _) if !target_features.iter().any(|f| f == "neon") => false, // MinGW ABI bugs <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115054> ("x86_64", "windows") if target_env == "gnu" && target_abi != "llvm" => false, // Infinite recursion <https://github.com/llvm/llvm-project/issues/97981> |
