@@ -19,7 +19,6 @@ use std::cmp;
1919use std:: fmt;
2020use std:: i128;
2121use std:: mem;
22- use std:: ops:: RangeInclusive ;
2322
2423use ich:: StableHashingContext ;
2524use rustc_data_structures:: stable_hasher:: { HashStable , StableHasher ,
@@ -492,7 +491,7 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> {
492491 ty:: TyFloat ( FloatTy :: F64 ) => scalar ( F64 ) ,
493492 ty:: TyFnPtr ( _) => {
494493 let mut ptr = scalar_unit ( Pointer ) ;
495- ptr. valid_range . start = 1 ;
494+ ptr. valid_range = 1 ..= * ptr . valid_range . end ( ) ;
496495 tcx. intern_layout ( LayoutDetails :: scalar ( self , ptr) )
497496 }
498497
@@ -506,7 +505,7 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> {
506505 ty:: TyRawPtr ( ty:: TypeAndMut { ty : pointee, .. } ) => {
507506 let mut data_ptr = scalar_unit ( Pointer ) ;
508507 if !ty. is_unsafe_ptr ( ) {
509- data_ptr. valid_range . start = 1 ;
508+ data_ptr. valid_range = 1 ..= * data_ptr . valid_range . end ( ) ;
510509 }
511510
512511 let pointee = tcx. normalize_erasing_regions ( param_env, pointee) ;
@@ -524,7 +523,7 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> {
524523 }
525524 ty:: TyDynamic ( ..) => {
526525 let mut vtable = scalar_unit ( Pointer ) ;
527- vtable. valid_range . start = 1 ;
526+ vtable. valid_range = 1 ..= * vtable . valid_range . end ( ) ;
528527 vtable
529528 }
530529 _ => return Err ( LayoutError :: Unknown ( unsized_part) )
@@ -751,8 +750,8 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> {
751750 match st. abi {
752751 Abi :: Scalar ( ref mut scalar) |
753752 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 ( ) ;
756755 }
757756 }
758757 _ => { }
@@ -788,18 +787,15 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> {
788787 }
789788 }
790789 }
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;
795791 }
796792
797- if niche_variants. start > niche_variants. end {
793+ if niche_variants. start ( ) > niche_variants. end ( ) {
798794 dataful_variant = None ;
799795 }
800796
801797 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 ;
803799 for ( field_index, & field) in variants[ i] . iter ( ) . enumerate ( ) {
804800 let ( offset, niche, niche_start) =
805801 match self . find_niche ( field, count) ? {
@@ -1659,22 +1655,22 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> {
16591655 let max_value = !0u128 >> ( 128 - bits) ;
16601656
16611657 // 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 ( ) )
16641660 } else {
1665- v. start - v. end - 1
1661+ v. start ( ) - v. end ( ) - 1
16661662 } ;
16671663
16681664 // Give up if we can't fit `count` consecutive niches.
16691665 if count > niches {
16701666 return None ;
16711667 }
16721668
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;
16751671 Some ( ( offset, Scalar {
16761672 value,
1677- valid_range : v. start ..=niche_end
1673+ valid_range : * v. start ( ) ..=niche_end
16781674 } , niche_start) )
16791675 } ;
16801676
@@ -1744,14 +1740,14 @@ impl<'a> HashStable<StableHashingContext<'a>> for Variants {
17441740 }
17451741 NicheFilling {
17461742 dataful_variant,
1747- niche_variants : RangeInclusive { start , end } ,
1743+ ref niche_variants ,
17481744 ref niche,
17491745 niche_start,
17501746 ref variants,
17511747 } => {
17521748 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) ;
17551751 niche. hash_stable ( hcx, hasher) ;
17561752 niche_start. hash_stable ( hcx, hasher) ;
17571753 variants. hash_stable ( hcx, hasher) ;
@@ -1814,10 +1810,10 @@ impl<'a> HashStable<StableHashingContext<'a>> for Scalar {
18141810 fn hash_stable < W : StableHasherResult > ( & self ,
18151811 hcx : & mut StableHashingContext < ' a > ,
18161812 hasher : & mut StableHasher < W > ) {
1817- let Scalar { value, valid_range : RangeInclusive { start , end } } = * self ;
1813+ let Scalar { value, ref valid_range } = * self ;
18181814 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) ;
18211817 }
18221818}
18231819
0 commit comments