@@ -9,6 +9,7 @@ use rustc_abi::{
9
9
HasDataLayout , Layout , LayoutCalculatorError , LayoutData , Niche , ReprOptions , Scalar , Size ,
10
10
StructKind , TagEncoding , VariantIdx , Variants , WrappingRange ,
11
11
} ;
12
+ use rustc_data_structures:: stable_hasher:: Hash64 ;
12
13
use rustc_index:: bit_set:: DenseBitSet ;
13
14
use rustc_index:: { IndexSlice , IndexVec } ;
14
15
use rustc_middle:: bug;
@@ -380,7 +381,7 @@ fn layout_of_uncached<'tcx>(
380
381
size,
381
382
max_repr_align : None ,
382
383
unadjusted_abi_align : element. align . abi ,
383
- randomization_seed : element. randomization_seed . wrapping_add ( count) ,
384
+ randomization_seed : element. randomization_seed . wrapping_add ( Hash64 :: new ( count) ) ,
384
385
} )
385
386
}
386
387
ty:: Slice ( element) => {
@@ -395,7 +396,9 @@ fn layout_of_uncached<'tcx>(
395
396
max_repr_align : None ,
396
397
unadjusted_abi_align : element. align . abi ,
397
398
// adding a randomly chosen value to distinguish slices
398
- randomization_seed : element. randomization_seed . wrapping_add ( 0x2dcba99c39784102 ) ,
399
+ randomization_seed : element
400
+ . randomization_seed
401
+ . wrapping_add ( Hash64 :: new ( 0x2dcba99c39784102 ) ) ,
399
402
} )
400
403
}
401
404
ty:: Str => tcx. mk_layout ( LayoutData {
@@ -408,7 +411,7 @@ fn layout_of_uncached<'tcx>(
408
411
max_repr_align : None ,
409
412
unadjusted_abi_align : dl. i8_align . abi ,
410
413
// another random value
411
- randomization_seed : 0xc1325f37d127be22 ,
414
+ randomization_seed : Hash64 :: new ( 0xc1325f37d127be22 ) ,
412
415
} ) ,
413
416
414
417
// Odd unit types.
@@ -585,7 +588,7 @@ fn layout_of_uncached<'tcx>(
585
588
align,
586
589
max_repr_align : None ,
587
590
unadjusted_abi_align : align. abi ,
588
- randomization_seed : e_ly. randomization_seed . wrapping_add ( e_len) ,
591
+ randomization_seed : e_ly. randomization_seed . wrapping_add ( Hash64 :: new ( e_len) ) ,
589
592
} )
590
593
}
591
594
@@ -1051,7 +1054,7 @@ fn coroutine_layout<'tcx>(
1051
1054
} ;
1052
1055
1053
1056
// this is similar to how ReprOptions populates its field_shuffle_seed
1054
- let def_hash = tcx. def_path_hash ( def_id) . 0 . to_smaller_hash ( ) . as_u64 ( ) ;
1057
+ let def_hash = tcx. def_path_hash ( def_id) . 0 . to_smaller_hash ( ) ;
1055
1058
1056
1059
let layout = tcx. mk_layout ( LayoutData {
1057
1060
variants : Variants :: Multiple {
0 commit comments