diff -rub libcore_orig/clone.rs libcore/clone.rs --- libcore_orig/clone.rs 2016-03-22 09:59:58.933883699 +0800 +++ libcore/clone.rs 2016-03-22 09:35:09.084786455 +0800 @@ -82,7 +82,9 @@ clone_impl! { u32 } clone_impl! { u64 } +#[cfg(not(disable_float))] clone_impl! { f32 } +#[cfg(not(disable_float))] clone_impl! { f64 } clone_impl! { () } diff -rub libcore_orig/default.rs libcore/default.rs --- libcore_orig/default.rs 2016-03-22 09:59:58.933883699 +0800 +++ libcore/default.rs 2016-03-22 09:35:09.084786455 +0800 @@ -160,5 +160,7 @@ default_impl! { i32, 0 } default_impl! { i64, 0 } +#[cfg(not(disable_float))] default_impl! { f32, 0.0f32 } +#[cfg(not(disable_float))] default_impl! { f64, 0.0f64 } diff -rub libcore_orig/fmt/mod.rs libcore/fmt/mod.rs --- libcore_orig/fmt/mod.rs 2016-03-22 09:59:58.937883733 +0800 +++ libcore/fmt/mod.rs 2016-03-22 09:35:09.084786455 +0800 @@ -17,6 +17,7 @@ use cell::{UnsafeCell, Cell, RefCell, Ref, RefMut, BorrowState}; use marker::PhantomData; use mem; +#[cfg(not(disable_float))] use num::flt2dec; use ops::Deref; use result; @@ -1020,6 +1021,7 @@ /// Takes the formatted parts and applies the padding. /// Assumes that the caller already has rendered the parts with required precision, /// so that `self.precision` can be ignored. + #[cfg(not(disable_float))] fn pad_formatted_parts(&mut self, formatted: &flt2dec::Formatted) -> Result { if let Some(mut width) = self.width { // for the sign-aware zero padding, we render the sign first and @@ -1056,6 +1058,7 @@ } } + #[cfg(not(disable_float))] fn write_formatted_parts(&mut self, formatted: &flt2dec::Formatted) -> Result { fn write_bytes(buf: &mut Write, s: &[u8]) -> Result { buf.write_str(unsafe { str::from_utf8_unchecked(s) }) @@ -1445,6 +1448,7 @@ } } +#[cfg(not(disable_float))] // Common code of floating point Debug and Display. fn float_to_decimal_common(fmt: &mut Formatter, num: &T, negative_zero: bool) -> Result where T: flt2dec::DecodableFloat @@ -1469,6 +1473,7 @@ fmt.pad_formatted_parts(&formatted) } +#[cfg(not(disable_float))] // Common code of floating point LowerExp and UpperExp. fn float_to_exponential_common(fmt: &mut Formatter, num: &T, upper: bool) -> Result where T: flt2dec::DecodableFloat @@ -1522,7 +1527,9 @@ } } } } +#[cfg(not(disable_float))] floating! { f32 } +#[cfg(not(disable_float))] floating! { f64 } // Implementation of Display/Debug for various core types Only in libcore/fmt: mod.rs.orig diff -rub libcore_orig/intrinsics.rs libcore/intrinsics.rs --- libcore_orig/intrinsics.rs 2016-03-22 09:59:58.933883699 +0800 +++ libcore/intrinsics.rs 2016-03-22 09:35:09.084786455 +0800 @@ -457,7 +457,10 @@ pub fn volatile_load(src: *const T) -> T; /// Perform a volatile store to the `dst` pointer. pub fn volatile_store(dst: *mut T, val: T); +} +#[cfg(not(disable_float))] +extern "rust-intrinsic" { /// Returns the square root of an `f32` pub fn sqrtf32(x: f32) -> f32; /// Returns the square root of an `f64` @@ -579,8 +582,9 @@ /// May assume inputs are finite. #[cfg(not(stage0))] pub fn frem_fast(a: T, b: T) -> T; +} - +extern "rust-intrinsic" { /// Returns the number of bits set in an integer type `T` pub fn ctpop(x: T) -> T; Only in libcore/: intrinsics.rs.orig Only in libcore/: intrinsics.rs.rej diff -rub libcore_orig/lib.rs libcore/lib.rs --- libcore_orig/lib.rs 2016-03-22 09:59:58.937883733 +0800 +++ libcore/lib.rs 2016-03-22 09:35:09.084786455 +0800 @@ -103,7 +103,9 @@ #[path = "num/u32.rs"] pub mod u32; #[path = "num/u64.rs"] pub mod u64; +#[cfg(not(disable_float))] #[path = "num/f32.rs"] pub mod f32; +#[cfg(not(disable_float))] #[path = "num/f64.rs"] pub mod f64; #[macro_use] Only in libcore/: lib.rs.orig Only in libcore/: lib.rs.rej diff -rub libcore_orig/num/flt2dec/decoder.rs libcore/num/flt2dec/decoder.rs --- libcore_orig/num/flt2dec/decoder.rs 2016-03-22 09:59:58.937883733 +0800 +++ libcore/num/flt2dec/decoder.rs 2016-03-22 09:35:09.084786455 +0800 @@ -12,6 +12,7 @@ use prelude::v1::*; +#[cfg(not(disable_float))] use {f32, f64}; use num::{Float, FpCategory}; @@ -57,10 +58,12 @@ fn min_pos_norm_value() -> Self; } +#[cfg(not(disable_float))] impl DecodableFloat for f32 { fn min_pos_norm_value() -> Self { f32::MIN_POSITIVE } } +#[cfg(not(disable_float))] impl DecodableFloat for f64 { fn min_pos_norm_value() -> Self { f64::MIN_POSITIVE } } diff -rub libcore_orig/num/mod.rs libcore/num/mod.rs --- libcore_orig/num/mod.rs 2016-03-22 09:59:58.941883767 +0800 +++ libcore/num/mod.rs 2016-03-22 09:35:09.084786455 +0800 @@ -44,7 +44,9 @@ mod wrapping; // All these modules are technically private and only exposed for libcoretest: +#[cfg(not(disable_float))] pub mod flt2dec; +#[cfg(not(disable_float))] pub mod dec2flt; pub mod bignum; pub mod diy_float; @@ -111,6 +113,7 @@ } )*) } +#[cfg(not(disable_float))] zero_one_impl_float! { f32 f64 } macro_rules! checked_op { @@ -2213,6 +2216,7 @@ #[unstable(feature = "core_float", reason = "stable interface is via `impl f{32,64}` in later crates", issue = "32110")] +#[cfg(not(disable_float))] pub trait Float: Sized { /// Returns the NaN value. #[unstable(feature = "float_extras", reason = "needs removal", @@ -2451,6 +2455,7 @@ } #[stable(feature = "rust1", since = "1.0.0")] +#[cfg(not(disable_float))] pub use num::dec2flt::ParseFloatError; // Conversion traits for primitive integer and float types @@ -2498,6 +2503,9 @@ // they fit in the significand, which is 24 bits in f32 and 53 bits in f64. // Lossy float conversions are not implemented at this time. +#[cfg(not(disable_float))] +mod _int_flot_conv { +use convert::From; // Signed -> Float impl_from! { i8, f32 } impl_from! { i8, f64 } @@ -2514,3 +2522,4 @@ // Float -> Float impl_from! { f32, f64 } +} Only in libcore/num: mod.rs.orig Only in libcore/num: mod.rs.rej diff -rub libcore_orig/ops.rs libcore/ops.rs --- libcore_orig/ops.rs 2016-03-22 09:59:58.937883733 +0800 +++ libcore/ops.rs 2016-03-22 09:35:09.084786455 +0800 @@ -215,7 +215,9 @@ )*) } -add_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 f32 f64 } +add_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 } +#[cfg(not(disable_float))] +add_impl! { f32 f64 } /// The `Sub` trait is used to specify the functionality of `-`. /// @@ -268,7 +270,9 @@ )*) } -sub_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 f32 f64 } +sub_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 } +#[cfg(not(disable_float))] +sub_impl! { f32 f64 } /// The `Mul` trait is used to specify the functionality of `*`. /// @@ -321,7 +325,9 @@ )*) } -mul_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 f32 f64 } +mul_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 } +#[cfg(not(disable_float))] +mul_impl! { f32 f64 } /// The `Div` trait is used to specify the functionality of `/`. /// @@ -392,6 +398,7 @@ )*) } +#[cfg(not(disable_float))] div_impl_float! { f32 f64 } /// The `Rem` trait is used to specify the functionality of `%`. @@ -463,6 +470,7 @@ )*) } +#[cfg(not(disable_float))] rem_impl_float! { f32 f64 } /// The `Neg` trait is used to specify the functionality of unary `-`. @@ -530,7 +538,9 @@ } // neg_impl_unsigned! { usize u8 u16 u32 u64 } -neg_impl_numeric! { isize i8 i16 i32 i64 f32 f64 } +neg_impl_numeric! { isize i8 i16 i32 i64 } +#[cfg(not(disable_float))] +neg_impl_numeric! { f32 f64 } /// The `Not` trait is used to specify the functionality of unary `!`. /// @@ -928,7 +938,9 @@ )+) } -add_assign_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 f32 f64 } +add_assign_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 } +#[cfg(not(disable_float))] +add_assign_impl! { f32 f64 } /// The `SubAssign` trait is used to specify the functionality of `-=`. /// @@ -972,7 +984,9 @@ )+) } -sub_assign_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 f32 f64 } +sub_assign_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 } +#[cfg(not(disable_float))] +sub_assign_impl! { f32 f64 } /// The `MulAssign` trait is used to specify the functionality of `*=`. /// @@ -1016,7 +1030,9 @@ )+) } -mul_assign_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 f32 f64 } +mul_assign_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 } +#[cfg(not(disable_float))] +mul_assign_impl! { f32 f64 } /// The `DivAssign` trait is used to specify the functionality of `/=`. /// @@ -1060,7 +1076,9 @@ )+) } -div_assign_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 f32 f64 } +div_assign_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 } +#[cfg(not(disable_float))] +div_assign_impl! { f32 f64 } /// The `RemAssign` trait is used to specify the functionality of `%=`. /// @@ -1104,7 +1122,9 @@ )+) } -rem_assign_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 f32 f64 } +rem_assign_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 } +#[cfg(not(disable_float))] +rem_assign_impl! { f32 f64 } /// The `BitAndAssign` trait is used to specify the functionality of `&=`. /// Only in libcore/: ops.rs.orig Only in libcore/: ops.rs.rej