@@ -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+
2631fn f32 ( ) {
2732 const_assert ! ( ( 1f32 ) . to_bits( ) , 0x3f800000 ) ;
2833 const_assert ! ( u32 :: from_be_bytes( 1f32 . to_be_bytes( ) ) , 0x3f800000 ) ;
@@ -48,7 +53,9 @@ fn f32() {
4853 const_assert ! ( f32 :: from_bits( MASKED_NAN1 ) . is_nan( ) ) ;
4954 const_assert ! ( f32 :: from_bits( MASKED_NAN2 ) . is_nan( ) ) ;
5055 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+ }
5259}
5360
5461fn f64 ( ) {
@@ -76,7 +83,9 @@ fn f64() {
7683 const_assert ! ( f64 :: from_bits( MASKED_NAN1 ) . is_nan( ) ) ;
7784 const_assert ! ( f64 :: from_bits( MASKED_NAN2 ) . is_nan( ) ) ;
7885 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+ }
8089}
8190
8291fn main ( ) {
0 commit comments