Skip to content

Commit

Permalink
rustup: lockfile fix, and a patch for f16/f128 float math
Browse files Browse the repository at this point in the history
  • Loading branch information
RalfJung committed Aug 8, 2024
1 parent 389b54e commit 29279bf
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 2 deletions.
2 changes: 1 addition & 1 deletion run-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ rm -f library
ln -s "$MIRI_LIB_SRC" library

# use the rust-src lockfile
cp "$MIRI_LIB_SRC/../Cargo.lock" Cargo.lock
cp "$MIRI_LIB_SRC/Cargo.lock" Cargo.lock

# This ensures that the "core" crate being built as part of `cargo miri test`
# is just a re-export of the sysroot crate, so we don't get duplicate lang items.
Expand Down
78 changes: 78 additions & 0 deletions rust-src.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
diff --git a/library/std/build.rs b/library/std/build.rs
index 18ca7b512a9..35a5977b6eb 100644
--- a/library/std/build.rs
+++ b/library/std/build.rs
@@ -11,6 +11,7 @@ fn main() {
.expect("CARGO_CFG_TARGET_POINTER_WIDTH was not set")
.parse()
.unwrap();
+ let is_miri = env::var_os("CARGO_CFG_MIRI").is_some();

println!("cargo:rustc-check-cfg=cfg(netbsd10)");
if target_os == "netbsd" && env::var("RUSTC_STD_NETBSD10").is_ok() {
@@ -91,6 +92,8 @@ fn main() {
println!("cargo:rustc-check-cfg=cfg(reliable_f128_math)");

let has_reliable_f16 = match (target_arch.as_str(), target_os.as_str()) {
+ // We can always enable these in Miri as that is not affected by codegen bugs.
+ _ if is_miri => true,
// Selection failure until recent LLVM <https://github.com/llvm/llvm-project/issues/93894>
// FIXME(llvm19): can probably be removed at the version bump
("loongarch64", _) => false,
@@ -118,6 +121,8 @@ fn main() {
};

let has_reliable_f128 = match (target_arch.as_str(), target_os.as_str()) {
+ // We can always enable these in Miri as that is not affected by codegen bugs.
+ _ if is_miri => true,
// Unsupported <https://github.com/llvm/llvm-project/issues/94434>
("arm64ec", _) => false,
// ABI and precision bugs <https://github.com/rust-lang/rust/issues/125109>
@@ -141,6 +146,8 @@ fn main() {
// LLVM is currenlty adding missing routines, <https://github.com/llvm/llvm-project/issues/93566>
let has_reliable_f16_math = has_reliable_f16
&& match (target_arch.as_str(), target_os.as_str()) {
+ // FIXME: Disabled on Miri as the intrinsics are not implemented yet.
+ _ if is_miri => false,
// Currently nothing special. Hooray!
// This will change as platforms gain better better support for standard ops but math
// lags behind.
@@ -149,6 +156,8 @@ fn main() {

let has_reliable_f128_math = has_reliable_f128
&& match (target_arch.as_str(), target_os.as_str()) {
+ // FIXME: Disabled on Miri as the intrinsics are not implemented yet.
+ _ if is_miri => false,
// LLVM lowers `fp128` math to `long double` symbols even on platforms where
// `long double` is not IEEE binary128. See
// <https://github.com/llvm/llvm-project/issues/44744>.
diff --git a/library/std/src/f16/tests.rs b/library/std/src/f16/tests.rs
index 50504e7ffd9..684ee3f3855 100644
--- a/library/std/src/f16/tests.rs
+++ b/library/std/src/f16/tests.rs
@@ -4,20 +4,20 @@
use crate::f16::consts;
use crate::num::{FpCategory as Fp, *};

-/// Tolerance for results on the order of 10.0e-2;
-#[cfg(reliable_f16_math)]
+/// Tolerance for results on the order of 10.0e-2
+#[allow(unused)]
const TOL_N2: f16 = 0.0001;

/// Tolerance for results on the order of 10.0e+0
-#[cfg(reliable_f16_math)]
+#[allow(unused)]
const TOL_0: f16 = 0.01;

/// Tolerance for results on the order of 10.0e+2
-#[cfg(reliable_f16_math)]
+#[allow(unused)]
const TOL_P2: f16 = 0.5;

/// Tolerance for results on the order of 10.0e+4
-#[cfg(reliable_f16_math)]
+#[allow(unused)]
const TOL_P4: f16 = 10.0;

/// Smallest number
2 changes: 1 addition & 1 deletion rust-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
nightly-2024-08-05
nightly-2024-08-08

0 comments on commit 29279bf

Please sign in to comment.