Skip to content

Commit 53e1a2e

Browse files
committed
disable problematic float-conv tests in i586 targets
also fix typo in const-float-bits-conv
1 parent 368a4c6 commit 53e1a2e

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

tests/ui/consts/const-float-bits-conv.rs

+13-6
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ macro_rules! const_assert {
2323
};
2424
}
2525

26+
fn has_broken_floats() -> bool {
27+
// i586 targets are broken due to <https://github.com/rust-lang/rust/issues/114479>.
28+
std::env::var("TARGET").is_ok_and(|v| v.contains("i586"))
29+
}
30+
2631
fn f32() {
2732
const_assert!((1f32).to_bits(), 0x3f800000);
2833
const_assert!(u32::from_be_bytes(1f32.to_be_bytes()), 0x3f800000);
@@ -41,14 +46,15 @@ fn f32() {
4146

4247
// Check that NaNs roundtrip their bits regardless of signalingness
4348
// 0xA is 0b1010; 0x5 is 0b0101 -- so these two together clobbers all the mantissa bits
44-
// ...actually, let's just check that these break. :D
4549
const MASKED_NAN1: u32 = f32::NAN.to_bits() ^ 0x002A_AAAA;
4650
const MASKED_NAN2: u32 = f32::NAN.to_bits() ^ 0x0055_5555;
4751

4852
const_assert!(f32::from_bits(MASKED_NAN1).is_nan());
49-
const_assert!(f32::from_bits(MASKED_NAN1).is_nan());
53+
const_assert!(f32::from_bits(MASKED_NAN2).is_nan());
5054
const_assert!(f32::from_bits(MASKED_NAN1).to_bits(), MASKED_NAN1);
51-
const_assert!(f32::from_bits(MASKED_NAN2).to_bits(), MASKED_NAN2);
55+
if !has_broken_floats() {
56+
const_assert!(f32::from_bits(MASKED_NAN2).to_bits(), MASKED_NAN2);
57+
}
5258
}
5359

5460
fn f64() {
@@ -69,14 +75,15 @@ fn f64() {
6975

7076
// Check that NaNs roundtrip their bits regardless of signalingness
7177
// 0xA is 0b1010; 0x5 is 0b0101 -- so these two together clobbers all the mantissa bits
72-
// ...actually, let's just check that these break. :D
7378
const MASKED_NAN1: u64 = f64::NAN.to_bits() ^ 0x000A_AAAA_AAAA_AAAA;
7479
const MASKED_NAN2: u64 = f64::NAN.to_bits() ^ 0x0005_5555_5555_5555;
7580

7681
const_assert!(f64::from_bits(MASKED_NAN1).is_nan());
77-
const_assert!(f64::from_bits(MASKED_NAN1).is_nan());
82+
const_assert!(f64::from_bits(MASKED_NAN2).is_nan());
7883
const_assert!(f64::from_bits(MASKED_NAN1).to_bits(), MASKED_NAN1);
79-
const_assert!(f64::from_bits(MASKED_NAN2).to_bits(), MASKED_NAN2);
84+
if !has_broken_floats() {
85+
const_assert!(f64::from_bits(MASKED_NAN2).to_bits(), MASKED_NAN2);
86+
}
8087
}
8188

8289
fn main() {

0 commit comments

Comments
 (0)