mirror of
https://github.com/rust-lang/rust
synced 2024-11-02 11:53:40 +00:00
Auto merge of #30733 - ubsan:wrapping_op_assign, r=eddyb
Fix a breaking change in #30523 While this does fix a breaking change, it is also, technically, a [breaking-change] to go back to our original way
This commit is contained in:
commit
21b025f55f
3 changed files with 51 additions and 49 deletions
|
@ -42,9 +42,9 @@ impl Shl<$f> for Wrapping<$t> {
|
|||
#[inline(always)]
|
||||
fn shl(self, other: $f) -> Wrapping<$t> {
|
||||
if other < 0 {
|
||||
Wrapping(self.0 >> (-other & self::shift_max::$t as $f))
|
||||
Wrapping(self.0.wrapping_shr((-other & self::shift_max::$t as $f) as u32))
|
||||
} else {
|
||||
Wrapping(self.0 << (other & self::shift_max::$t as $f))
|
||||
Wrapping(self.0.wrapping_shl((other & self::shift_max::$t as $f) as u32))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -64,9 +64,9 @@ impl Shr<$f> for Wrapping<$t> {
|
|||
#[inline(always)]
|
||||
fn shr(self, other: $f) -> Wrapping<$t> {
|
||||
if other < 0 {
|
||||
Wrapping(self.0 << (-other & self::shift_max::$t as $f))
|
||||
Wrapping(self.0.wrapping_shl((-other & self::shift_max::$t as $f) as u32))
|
||||
} else {
|
||||
Wrapping(self.0 >> (other & self::shift_max::$t as $f))
|
||||
Wrapping(self.0.wrapping_shr((other & self::shift_max::$t as $f) as u32))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -89,7 +89,7 @@ impl Shl<$f> for Wrapping<$t> {
|
|||
|
||||
#[inline(always)]
|
||||
fn shl(self, other: $f) -> Wrapping<$t> {
|
||||
Wrapping(self.0 << (other & self::shift_max::$t as $f))
|
||||
Wrapping(self.0.wrapping_shl((other & self::shift_max::$t as $f) as u32))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -107,7 +107,7 @@ impl Shr<$f> for Wrapping<$t> {
|
|||
|
||||
#[inline(always)]
|
||||
fn shr(self, other: $f) -> Wrapping<$t> {
|
||||
Wrapping(self.0 >> (other & self::shift_max::$t as $f))
|
||||
Wrapping(self.0.wrapping_shr((other & self::shift_max::$t as $f) as u32))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -124,17 +124,17 @@ fn shr_assign(&mut self, other: $f) {
|
|||
// FIXME (#23545): uncomment the remaining impls
|
||||
macro_rules! sh_impl_all {
|
||||
($($t:ident)*) => ($(
|
||||
sh_impl_unsigned! { $t, u8 }
|
||||
sh_impl_unsigned! { $t, u16 }
|
||||
sh_impl_unsigned! { $t, u32 }
|
||||
sh_impl_unsigned! { $t, u64 }
|
||||
//sh_impl_unsigned! { $t, u8 }
|
||||
//sh_impl_unsigned! { $t, u16 }
|
||||
//sh_impl_unsigned! { $t, u32 }
|
||||
//sh_impl_unsigned! { $t, u64 }
|
||||
sh_impl_unsigned! { $t, usize }
|
||||
|
||||
sh_impl_signed! { $t, i8 }
|
||||
sh_impl_signed! { $t, i16 }
|
||||
sh_impl_signed! { $t, i32 }
|
||||
sh_impl_signed! { $t, i64 }
|
||||
sh_impl_signed! { $t, isize }
|
||||
//sh_impl_signed! { $t, i8 }
|
||||
//sh_impl_signed! { $t, i16 }
|
||||
//sh_impl_signed! { $t, i32 }
|
||||
//sh_impl_signed! { $t, i64 }
|
||||
//sh_impl_signed! { $t, isize }
|
||||
)*)
|
||||
}
|
||||
|
||||
|
|
|
@ -170,7 +170,7 @@ fn isaac(&mut self) {
|
|||
const MIDPOINT: usize = RAND_SIZE_USIZE / 2;
|
||||
|
||||
macro_rules! ind {
|
||||
($x:expr) => (self.mem[($x >> 2u32).0 as usize & (RAND_SIZE_USIZE - 1)] )
|
||||
($x:expr) => (self.mem[($x >> 2).0 as usize & (RAND_SIZE_USIZE - 1)] )
|
||||
}
|
||||
|
||||
let r = [(0, MIDPOINT), (MIDPOINT, 0)];
|
||||
|
@ -452,7 +452,7 @@ fn isaac64(&mut self) {
|
|||
const MP_VEC: [(usize, usize); 2] = [(0, MIDPOINT), (MIDPOINT, 0)];
|
||||
macro_rules! ind {
|
||||
($x:expr) => {
|
||||
*self.mem.get_unchecked((($x >> 3u32).0 as usize) & (RAND_SIZE_64 - 1))
|
||||
*self.mem.get_unchecked((($x >> 3).0 as usize) & (RAND_SIZE_64 - 1))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -495,10 +495,10 @@ macro_rules! rngstepn {
|
|||
}}
|
||||
}
|
||||
|
||||
rngstepp!(0, 21u32);
|
||||
rngstepn!(1, 5u32);
|
||||
rngstepp!(2, 12u32);
|
||||
rngstepn!(3, 33u32);
|
||||
rngstepp!(0, 21);
|
||||
rngstepn!(1, 5);
|
||||
rngstepp!(2, 12);
|
||||
rngstepn!(3, 33);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -309,22 +309,23 @@ macro_rules! sh_test_negative_all {
|
|||
sh_test!(shl(usize::MAX, -((usize::BITS + 1) as $t)) == usize::MAX / 2);
|
||||
}
|
||||
}
|
||||
sh_test_all!(i8);
|
||||
sh_test_all!(u8);
|
||||
sh_test_all!(i16);
|
||||
sh_test_all!(u16);
|
||||
sh_test_all!(i32);
|
||||
sh_test_all!(u32);
|
||||
sh_test_all!(i64);
|
||||
sh_test_all!(u64);
|
||||
sh_test_all!(isize);
|
||||
// FIXME(#23545): Uncomment the remaining tests
|
||||
//sh_test_all!(i8);
|
||||
//sh_test_all!(u8);
|
||||
//sh_test_all!(i16);
|
||||
//sh_test_all!(u16);
|
||||
//sh_test_all!(i32);
|
||||
//sh_test_all!(u32);
|
||||
//sh_test_all!(i64);
|
||||
//sh_test_all!(u64);
|
||||
//sh_test_all!(isize);
|
||||
sh_test_all!(usize);
|
||||
|
||||
sh_test_negative_all!(i8);
|
||||
sh_test_negative_all!(i16);
|
||||
sh_test_negative_all!(i32);
|
||||
sh_test_negative_all!(i64);
|
||||
sh_test_negative_all!(isize);
|
||||
//sh_test_negative_all!(i8);
|
||||
//sh_test_negative_all!(i16);
|
||||
//sh_test_negative_all!(i32);
|
||||
//sh_test_negative_all!(i64);
|
||||
//sh_test_negative_all!(isize);
|
||||
}
|
||||
|
||||
fn test_sh_op_assigns() {
|
||||
|
@ -393,20 +394,21 @@ macro_rules! sh_assign_test_negative_all {
|
|||
}
|
||||
}
|
||||
|
||||
sh_assign_test_all!(i8);
|
||||
sh_assign_test_all!(u8);
|
||||
sh_assign_test_all!(i16);
|
||||
sh_assign_test_all!(u16);
|
||||
sh_assign_test_all!(i32);
|
||||
sh_assign_test_all!(u32);
|
||||
sh_assign_test_all!(i64);
|
||||
sh_assign_test_all!(u64);
|
||||
sh_assign_test_all!(isize);
|
||||
// FIXME(#23545): Uncomment the remaining tests
|
||||
//sh_assign_test_all!(i8);
|
||||
//sh_assign_test_all!(u8);
|
||||
//sh_assign_test_all!(i16);
|
||||
//sh_assign_test_all!(u16);
|
||||
//sh_assign_test_all!(i32);
|
||||
//sh_assign_test_all!(u32);
|
||||
//sh_assign_test_all!(i64);
|
||||
//sh_assign_test_all!(u64);
|
||||
//sh_assign_test_all!(isize);
|
||||
sh_assign_test_all!(usize);
|
||||
|
||||
sh_assign_test_negative_all!(i8);
|
||||
sh_assign_test_negative_all!(i16);
|
||||
sh_assign_test_negative_all!(i32);
|
||||
sh_assign_test_negative_all!(i64);
|
||||
sh_assign_test_negative_all!(isize);
|
||||
//sh_assign_test_negative_all!(i8);
|
||||
//sh_assign_test_negative_all!(i16);
|
||||
//sh_assign_test_negative_all!(i32);
|
||||
//sh_assign_test_negative_all!(i64);
|
||||
//sh_assign_test_negative_all!(isize);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue