@@ -23,6 +23,11 @@ macro_rules! const_assert {
23
23
} ;
24
24
}
25
25
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
+
26
31
fn f32 ( ) {
27
32
const_assert ! ( ( 1f32 ) . to_bits( ) , 0x3f800000 ) ;
28
33
const_assert ! ( u32 :: from_be_bytes( 1f32 . to_be_bytes( ) ) , 0x3f800000 ) ;
@@ -48,7 +53,9 @@ fn f32() {
48
53
const_assert ! ( f32 :: from_bits( MASKED_NAN1 ) . is_nan( ) ) ;
49
54
const_assert ! ( f32 :: from_bits( MASKED_NAN2 ) . is_nan( ) ) ;
50
55
const_assert ! ( f32 :: from_bits( MASKED_NAN1 ) . to_bits( ) , MASKED_NAN1 ) ;
51
- const_assert ! ( f32 :: from_bits( MASKED_NAN2 ) . to_bits( ) , MASKED_NAN2 ) ;
56
+ if !has_broken_floats ( ) {
57
+ const_assert ! ( f32 :: from_bits( MASKED_NAN2 ) . to_bits( ) , MASKED_NAN2 ) ;
58
+ }
52
59
}
53
60
54
61
fn f64 ( ) {
@@ -76,7 +83,9 @@ fn f64() {
76
83
const_assert ! ( f64 :: from_bits( MASKED_NAN1 ) . is_nan( ) ) ;
77
84
const_assert ! ( f64 :: from_bits( MASKED_NAN2 ) . is_nan( ) ) ;
78
85
const_assert ! ( f64 :: from_bits( MASKED_NAN1 ) . to_bits( ) , MASKED_NAN1 ) ;
79
- const_assert ! ( f64 :: from_bits( MASKED_NAN2 ) . to_bits( ) , MASKED_NAN2 ) ;
86
+ if !has_broken_floats ( ) {
87
+ const_assert ! ( f64 :: from_bits( MASKED_NAN2 ) . to_bits( ) , MASKED_NAN2 ) ;
88
+ }
80
89
}
81
90
82
91
fn main ( ) {
0 commit comments