@@ -19,7 +19,6 @@ use std::cmp;
19
19
use std:: fmt;
20
20
use std:: i128;
21
21
use std:: mem;
22
- use std:: ops:: RangeInclusive ;
23
22
24
23
use ich:: StableHashingContext ;
25
24
use rustc_data_structures:: stable_hasher:: { HashStable , StableHasher ,
@@ -492,7 +491,7 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> {
492
491
ty:: TyFloat ( FloatTy :: F64 ) => scalar ( F64 ) ,
493
492
ty:: TyFnPtr ( _) => {
494
493
let mut ptr = scalar_unit ( Pointer ) ;
495
- ptr. valid_range . start = 1 ;
494
+ ptr. valid_range = 1 ..= * ptr . valid_range . end ( ) ;
496
495
tcx. intern_layout ( LayoutDetails :: scalar ( self , ptr) )
497
496
}
498
497
@@ -506,7 +505,7 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> {
506
505
ty:: TyRawPtr ( ty:: TypeAndMut { ty : pointee, .. } ) => {
507
506
let mut data_ptr = scalar_unit ( Pointer ) ;
508
507
if !ty. is_unsafe_ptr ( ) {
509
- data_ptr. valid_range . start = 1 ;
508
+ data_ptr. valid_range = 1 ..= * data_ptr . valid_range . end ( ) ;
510
509
}
511
510
512
511
let pointee = tcx. normalize_erasing_regions ( param_env, pointee) ;
@@ -524,7 +523,7 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> {
524
523
}
525
524
ty:: TyDynamic ( ..) => {
526
525
let mut vtable = scalar_unit ( Pointer ) ;
527
- vtable. valid_range . start = 1 ;
526
+ vtable. valid_range = 1 ..= * vtable . valid_range . end ( ) ;
528
527
vtable
529
528
}
530
529
_ => return Err ( LayoutError :: Unknown ( unsized_part) )
@@ -751,8 +750,8 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> {
751
750
match st. abi {
752
751
Abi :: Scalar ( ref mut scalar) |
753
752
Abi :: ScalarPair ( ref mut scalar, _) => {
754
- if scalar. valid_range . start == 0 {
755
- scalar. valid_range . start = 1 ;
753
+ if * scalar. valid_range . start ( ) == 0 {
754
+ scalar. valid_range = 1 ..= * scalar . valid_range . end ( ) ;
756
755
}
757
756
}
758
757
_ => { }
@@ -788,18 +787,15 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> {
788
787
}
789
788
}
790
789
}
791
- if niche_variants. start > v {
792
- niche_variants. start = v;
793
- }
794
- niche_variants. end = v;
790
+ niche_variants = * niche_variants. start ( ) . min ( & v) ..=v;
795
791
}
796
792
797
- if niche_variants. start > niche_variants. end {
793
+ if niche_variants. start ( ) > niche_variants. end ( ) {
798
794
dataful_variant = None ;
799
795
}
800
796
801
797
if let Some ( i) = dataful_variant {
802
- let count = ( niche_variants. end - niche_variants. start + 1 ) as u128 ;
798
+ let count = ( niche_variants. end ( ) - niche_variants. start ( ) + 1 ) as u128 ;
803
799
for ( field_index, & field) in variants[ i] . iter ( ) . enumerate ( ) {
804
800
let ( offset, niche, niche_start) =
805
801
match self . find_niche ( field, count) ? {
@@ -1659,22 +1655,22 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> {
1659
1655
let max_value = !0u128 >> ( 128 - bits) ;
1660
1656
1661
1657
// Find out how many values are outside the valid range.
1662
- let niches = if v. start <= v. end {
1663
- v. start + ( max_value - v. end )
1658
+ let niches = if v. start ( ) <= v. end ( ) {
1659
+ v. start ( ) + ( max_value - v. end ( ) )
1664
1660
} else {
1665
- v. start - v. end - 1
1661
+ v. start ( ) - v. end ( ) - 1
1666
1662
} ;
1667
1663
1668
1664
// Give up if we can't fit `count` consecutive niches.
1669
1665
if count > niches {
1670
1666
return None ;
1671
1667
}
1672
1668
1673
- let niche_start = v. end . wrapping_add ( 1 ) & max_value;
1674
- let niche_end = v. end . wrapping_add ( count) & max_value;
1669
+ let niche_start = v. end ( ) . wrapping_add ( 1 ) & max_value;
1670
+ let niche_end = v. end ( ) . wrapping_add ( count) & max_value;
1675
1671
Some ( ( offset, Scalar {
1676
1672
value,
1677
- valid_range : v. start ..=niche_end
1673
+ valid_range : * v. start ( ) ..=niche_end
1678
1674
} , niche_start) )
1679
1675
} ;
1680
1676
@@ -1744,14 +1740,14 @@ impl<'a> HashStable<StableHashingContext<'a>> for Variants {
1744
1740
}
1745
1741
NicheFilling {
1746
1742
dataful_variant,
1747
- niche_variants : RangeInclusive { start , end } ,
1743
+ ref niche_variants ,
1748
1744
ref niche,
1749
1745
niche_start,
1750
1746
ref variants,
1751
1747
} => {
1752
1748
dataful_variant. hash_stable ( hcx, hasher) ;
1753
- start. hash_stable ( hcx, hasher) ;
1754
- end. hash_stable ( hcx, hasher) ;
1749
+ niche_variants . start ( ) . hash_stable ( hcx, hasher) ;
1750
+ niche_variants . end ( ) . hash_stable ( hcx, hasher) ;
1755
1751
niche. hash_stable ( hcx, hasher) ;
1756
1752
niche_start. hash_stable ( hcx, hasher) ;
1757
1753
variants. hash_stable ( hcx, hasher) ;
@@ -1814,10 +1810,10 @@ impl<'a> HashStable<StableHashingContext<'a>> for Scalar {
1814
1810
fn hash_stable < W : StableHasherResult > ( & self ,
1815
1811
hcx : & mut StableHashingContext < ' a > ,
1816
1812
hasher : & mut StableHasher < W > ) {
1817
- let Scalar { value, valid_range : RangeInclusive { start , end } } = * self ;
1813
+ let Scalar { value, ref valid_range } = * self ;
1818
1814
value. hash_stable ( hcx, hasher) ;
1819
- start. hash_stable ( hcx, hasher) ;
1820
- end. hash_stable ( hcx, hasher) ;
1815
+ valid_range . start ( ) . hash_stable ( hcx, hasher) ;
1816
+ valid_range . end ( ) . hash_stable ( hcx, hasher) ;
1821
1817
}
1822
1818
}
1823
1819
0 commit comments