Skip to content

Commit 2767361

Browse files
committed
test: don't assume anything about the sign of NAN.
1 parent 8cbffc5 commit 2767361

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

src/libstd/num/f32.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1382,7 +1382,6 @@ mod tests {
13821382
}
13831383

13841384
#[test]
1385-
#[rustc_no_mir] // FIXME #27840 MIR NAN ends up negative.
13861385
fn test_integer_decode() {
13871386
assert_eq!(3.14159265359f32.integer_decode(), (13176795, -22, 1));
13881387
assert_eq!((-8573.5918555f32).integer_decode(), (8779358, -10, -1));
@@ -1391,7 +1390,11 @@ mod tests {
13911390
assert_eq!((-0f32).integer_decode(), (0, -150, -1));
13921391
assert_eq!(INFINITY.integer_decode(), (8388608, 105, 1));
13931392
assert_eq!(NEG_INFINITY.integer_decode(), (8388608, 105, -1));
1394-
assert_eq!(NAN.integer_decode(), (12582912, 105, 1));
1393+
1394+
// Ignore the "sign" (quiet / signalling flag) of NAN.
1395+
// It can vary between runtime operations and LLVM folding.
1396+
let (nan_m, nan_e, _nan_s) = NAN.integer_decode();
1397+
assert_eq!((nan_m, nan_e), (12582912, 105));
13951398
}
13961399

13971400
#[test]

src/libstd/num/f64.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1277,7 +1277,6 @@ mod tests {
12771277
}
12781278

12791279
#[test]
1280-
#[rustc_no_mir] // FIXME #27840 MIR NAN ends up negative.
12811280
fn test_integer_decode() {
12821281
assert_eq!(3.14159265359f64.integer_decode(), (7074237752028906, -51, 1));
12831282
assert_eq!((-8573.5918555f64).integer_decode(), (4713381968463931, -39, -1));
@@ -1286,7 +1285,11 @@ mod tests {
12861285
assert_eq!((-0f64).integer_decode(), (0, -1075, -1));
12871286
assert_eq!(INFINITY.integer_decode(), (4503599627370496, 972, 1));
12881287
assert_eq!(NEG_INFINITY.integer_decode(), (4503599627370496, 972, -1));
1289-
assert_eq!(NAN.integer_decode(), (6755399441055744, 972, 1));
1288+
1289+
// Ignore the "sign" (quiet / signalling flag) of NAN.
1290+
// It can vary between runtime operations and LLVM folding.
1291+
let (nan_m, nan_e, _nan_s) = NAN.integer_decode();
1292+
assert_eq!((nan_m, nan_e), (6755399441055744, 972));
12901293
}
12911294

12921295
#[test]

0 commit comments

Comments
 (0)