diff options
| author | pravic <[email protected]> | 2016-04-12 17:48:41 +0300 |
|---|---|---|
| committer | pravic <[email protected]> | 2016-04-12 17:48:41 +0300 |
| commit | c868536ae3f7c468ab62e4853e806d6d4150bdc5 (patch) | |
| tree | 9f2b0fbe414eb81dc1cdd92aa5754e9063bf2c20 /libcore_nofp.patch | |
| parent | add libcore from 2016-04-11 nightly (diff) | |
| download | kmd-env-rs-c868536ae3f7c468ab62e4853e806d6d4150bdc5.tar.xz kmd-env-rs-c868536ae3f7c468ab62e4853e806d6d4150bdc5.zip | |
apply libcore_nofp patch
Diffstat (limited to 'libcore_nofp.patch')
| -rw-r--r-- | libcore_nofp.patch | 318 |
1 files changed, 318 insertions, 0 deletions
diff --git a/libcore_nofp.patch b/libcore_nofp.patch new file mode 100644 index 0000000..8a52496 --- /dev/null +++ b/libcore_nofp.patch @@ -0,0 +1,318 @@ +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<T>(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<T>(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<T>(src: *const T) -> T; + /// Perform a volatile store to the `dst` pointer. + pub fn volatile_store<T>(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<T>(a: T, b: T) -> T; ++} + +- ++extern "rust-intrinsic" { + /// Returns the number of bits set in an integer type `T` + pub fn ctpop<T>(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 |