Auto merge of #93014 - Kobzol:revert-92103-stable-hash-skip-zero-bytes, r=the8472
Revert "Do not hash leading zero bytes of i64 numbers in Sip128 hasher" Reverts rust-lang/rust#92103. It had a (in retrospect, obvious) correctness problem where changing the order of two adjacent values would produce identical hashes, which is problematic in stable hashing (see [this comment](https://github.com/rust-lang/rust/pull/92103#issuecomment-1014625442)). I'll try to send the PR again with a fix for this issue. r? `@the8472`
This commit is contained in:
commit
d2dc425721
@ -409,20 +409,6 @@ pub fn finish128(mut self) -> (u64, u64) {
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! dispatch_value {
|
||||
($target: expr, $value:expr) => {
|
||||
let value = $value;
|
||||
#[allow(unreachable_patterns)]
|
||||
#[allow(overflowing_literals)]
|
||||
match value {
|
||||
0..=0xFF => $target.short_write(value as u8),
|
||||
0x100..=0xFFFF => $target.short_write(value as u16),
|
||||
0x10000..=0xFFFFFFFF => $target.short_write(value as u32),
|
||||
_ => $target.short_write(value as u64),
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
impl Hasher for SipHasher128 {
|
||||
#[inline]
|
||||
fn write_u8(&mut self, i: u8) {
|
||||
@ -436,7 +422,7 @@ fn write_u16(&mut self, i: u16) {
|
||||
|
||||
#[inline]
|
||||
fn write_u32(&mut self, i: u32) {
|
||||
dispatch_value!(self, i);
|
||||
self.short_write(i);
|
||||
}
|
||||
|
||||
#[inline]
|
||||
@ -466,7 +452,7 @@ fn write_i32(&mut self, i: i32) {
|
||||
|
||||
#[inline]
|
||||
fn write_i64(&mut self, i: i64) {
|
||||
dispatch_value!(self, i as u64);
|
||||
self.short_write(i as u64);
|
||||
}
|
||||
|
||||
#[inline]
|
||||
|
@ -37,7 +37,7 @@
|
||||
// Const generic parameter
|
||||
// gdb-command:info functions -q function_names::const_generic_fn.*
|
||||
// gdb-check:[...]static fn function_names::const_generic_fn_bool<false>();
|
||||
// gdb-check:[...]static fn function_names::const_generic_fn_non_int<{CONST#3fcd7c34c1555be6}>();
|
||||
// gdb-check:[...]static fn function_names::const_generic_fn_non_int<{CONST#fe3cfa0214ac55c7}>();
|
||||
// gdb-check:[...]static fn function_names::const_generic_fn_signed_int<-7>();
|
||||
// gdb-check:[...]static fn function_names::const_generic_fn_unsigned_int<14>();
|
||||
|
||||
@ -76,7 +76,7 @@
|
||||
// Const generic parameter
|
||||
// cdb-command:x a!function_names::const_generic_fn*
|
||||
// cdb-check:[...] a!function_names::const_generic_fn_bool<false> (void)
|
||||
// cdb-check:[...] a!function_names::const_generic_fn_non_int<CONST$3fcd7c34c1555be6> (void)
|
||||
// cdb-check:[...] a!function_names::const_generic_fn_non_int<CONST$fe3cfa0214ac55c7> (void)
|
||||
// cdb-check:[...] a!function_names::const_generic_fn_unsigned_int<14> (void)
|
||||
// cdb-check:[...] a!function_names::const_generic_fn_signed_int<-7> (void)
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
error: symbol-name(_ZN5basic4main17h13492e1c4157543fE)
|
||||
error: symbol-name(_ZN5basic4main17h7c2c715a9b77648bE)
|
||||
--> $DIR/basic.rs:8:1
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: demangling(basic::main::h13492e1c4157543f)
|
||||
error: demangling(basic::main::h7c2c715a9b77648b)
|
||||
--> $DIR/basic.rs:8:1
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
|
@ -1,10 +1,10 @@
|
||||
error: symbol-name(_ZN11issue_609253foo37Foo$LT$issue_60925..llv$u6d$..Foo$GT$3foo17hd250581ce0d79d13E)
|
||||
error: symbol-name(_ZN11issue_609253foo37Foo$LT$issue_60925..llv$u6d$..Foo$GT$3foo17h419983d0842a72aeE)
|
||||
--> $DIR/issue-60925.rs:21:9
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: demangling(issue_60925::foo::Foo<issue_60925::llvm::Foo>::foo::hd250581ce0d79d13)
|
||||
error: demangling(issue_60925::foo::Foo<issue_60925::llvm::Foo>::foo::h419983d0842a72ae)
|
||||
--> $DIR/issue-60925.rs:21:9
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
|
Loading…
Reference in New Issue
Block a user