@@ -34,17 +34,17 @@ use rustc_middle::ich::NodeIdHashingMode;
34
34
use rustc_middle:: middle:: codegen_fn_attrs:: CodegenFnAttrFlags ;
35
35
use rustc_middle:: mir:: interpret:: truncate;
36
36
use rustc_middle:: mir:: { self , Field , GeneratorLayout } ;
37
- use rustc_middle:: ty:: layout:: {
38
- self , Align , Integer , IntegerExt , LayoutOf , PrimitiveExt , Size , TyAndLayout , VariantIdx ,
39
- } ;
37
+ use rustc_middle:: ty:: layout:: { self , IntegerExt , PrimitiveExt , TyAndLayout } ;
40
38
use rustc_middle:: ty:: subst:: { GenericArgKind , SubstsRef } ;
41
39
use rustc_middle:: ty:: Instance ;
42
40
use rustc_middle:: ty:: { self , AdtKind , ParamEnv , Ty , TyCtxt } ;
43
41
use rustc_middle:: { bug, span_bug} ;
44
42
use rustc_session:: config:: { self , DebugInfo } ;
45
43
use rustc_span:: symbol:: { Interner , Symbol } ;
46
44
use rustc_span:: { self , FileName , Span } ;
47
- use rustc_target:: abi:: HasDataLayout ;
45
+ use rustc_target:: abi:: { Abi , Align , DiscriminantKind , HasDataLayout , Integer , LayoutOf } ;
46
+ use rustc_target:: abi:: { Int , Pointer , F32 , F64 } ;
47
+ use rustc_target:: abi:: { Primitive , Size , VariantIdx , Variants } ;
48
48
49
49
use libc:: { c_longlong, c_uint} ;
50
50
use std:: collections:: hash_map:: Entry ;
@@ -1364,7 +1364,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
1364
1364
} ;
1365
1365
1366
1366
match self . layout . variants {
1367
- layout :: Variants :: Single { index } => {
1367
+ Variants :: Single { index } => {
1368
1368
if let ty:: Adt ( adt, _) = & self . enum_type . kind {
1369
1369
if adt. variants . is_empty ( ) {
1370
1370
return vec ! [ ] ;
@@ -1399,8 +1399,8 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
1399
1399
discriminant: None ,
1400
1400
} ]
1401
1401
}
1402
- layout :: Variants :: Multiple {
1403
- discr_kind : layout :: DiscriminantKind :: Tag ,
1402
+ Variants :: Multiple {
1403
+ discr_kind : DiscriminantKind :: Tag ,
1404
1404
discr_index,
1405
1405
ref variants,
1406
1406
..
@@ -1457,9 +1457,9 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
1457
1457
} )
1458
1458
. collect ( )
1459
1459
}
1460
- layout :: Variants :: Multiple {
1460
+ Variants :: Multiple {
1461
1461
discr_kind :
1462
- layout :: DiscriminantKind :: Niche { ref niche_variants, niche_start, dataful_variant } ,
1462
+ DiscriminantKind :: Niche { ref niche_variants, niche_start, dataful_variant } ,
1463
1463
ref discr,
1464
1464
ref variants,
1465
1465
discr_index,
@@ -1592,7 +1592,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
1592
1592
// Creates `MemberDescription`s for the fields of a single enum variant.
1593
1593
struct VariantMemberDescriptionFactory < ' ll , ' tcx > {
1594
1594
/// Cloned from the `layout::Struct` describing the variant.
1595
- offsets : Vec < layout :: Size > ,
1595
+ offsets : Vec < Size > ,
1596
1596
args : Vec < ( String , Ty < ' tcx > ) > ,
1597
1597
discriminant_type_metadata : Option < & ' ll DIType > ,
1598
1598
span : Span ,
@@ -1777,7 +1777,7 @@ fn prepare_enum_metadata(
1777
1777
// <unknown>
1778
1778
let file_metadata = unknown_file_metadata ( cx) ;
1779
1779
1780
- let discriminant_type_metadata = |discr : layout :: Primitive | {
1780
+ let discriminant_type_metadata = |discr : Primitive | {
1781
1781
let enumerators_metadata: Vec < _ > = match enum_type. kind {
1782
1782
ty:: Adt ( def, _) => def
1783
1783
. discriminants ( cx. tcx )
@@ -1870,27 +1870,20 @@ fn prepare_enum_metadata(
1870
1870
let layout = cx. layout_of ( enum_type) ;
1871
1871
1872
1872
if let (
1873
- & layout:: Abi :: Scalar ( _) ,
1874
- & layout:: Variants :: Multiple {
1875
- discr_kind : layout:: DiscriminantKind :: Tag , ref discr, ..
1876
- } ,
1873
+ & Abi :: Scalar ( _) ,
1874
+ & Variants :: Multiple { discr_kind : DiscriminantKind :: Tag , ref discr, .. } ,
1877
1875
) = ( & layout. abi , & layout. variants )
1878
1876
{
1879
1877
return FinalMetadata ( discriminant_type_metadata ( discr. value ) ) ;
1880
1878
}
1881
1879
1882
1880
if use_enum_fallback ( cx) {
1883
1881
let discriminant_type_metadata = match layout. variants {
1884
- layout:: Variants :: Single { .. }
1885
- | layout:: Variants :: Multiple {
1886
- discr_kind : layout:: DiscriminantKind :: Niche { .. } ,
1887
- ..
1888
- } => None ,
1889
- layout:: Variants :: Multiple {
1890
- discr_kind : layout:: DiscriminantKind :: Tag ,
1891
- ref discr,
1892
- ..
1893
- } => Some ( discriminant_type_metadata ( discr. value ) ) ,
1882
+ Variants :: Single { .. }
1883
+ | Variants :: Multiple { discr_kind : DiscriminantKind :: Niche { .. } , .. } => None ,
1884
+ Variants :: Multiple { discr_kind : DiscriminantKind :: Tag , ref discr, .. } => {
1885
+ Some ( discriminant_type_metadata ( discr. value ) )
1886
+ }
1894
1887
} ;
1895
1888
1896
1889
let enum_metadata = {
@@ -1938,10 +1931,10 @@ fn prepare_enum_metadata(
1938
1931
} ;
1939
1932
let discriminator_metadata = match layout. variants {
1940
1933
// A single-variant enum has no discriminant.
1941
- layout :: Variants :: Single { .. } => None ,
1934
+ Variants :: Single { .. } => None ,
1942
1935
1943
- layout :: Variants :: Multiple {
1944
- discr_kind : layout :: DiscriminantKind :: Niche { .. } ,
1936
+ Variants :: Multiple {
1937
+ discr_kind : DiscriminantKind :: Niche { .. } ,
1945
1938
ref discr,
1946
1939
discr_index,
1947
1940
..
@@ -1951,10 +1944,10 @@ fn prepare_enum_metadata(
1951
1944
let align = discr. value . align ( cx) ;
1952
1945
1953
1946
let discr_type = match discr. value {
1954
- layout :: Int ( t, _) => t,
1955
- layout :: F32 => Integer :: I32 ,
1956
- layout :: F64 => Integer :: I64 ,
1957
- layout :: Pointer => cx. data_layout ( ) . ptr_sized_integer ( ) ,
1947
+ Int ( t, _) => t,
1948
+ F32 => Integer :: I32 ,
1949
+ F64 => Integer :: I64 ,
1950
+ Pointer => cx. data_layout ( ) . ptr_sized_integer ( ) ,
1958
1951
}
1959
1952
. to_ty ( cx. tcx , false ) ;
1960
1953
@@ -1976,11 +1969,8 @@ fn prepare_enum_metadata(
1976
1969
}
1977
1970
}
1978
1971
1979
- layout:: Variants :: Multiple {
1980
- discr_kind : layout:: DiscriminantKind :: Tag ,
1981
- ref discr,
1982
- discr_index,
1983
- ..
1972
+ Variants :: Multiple {
1973
+ discr_kind : DiscriminantKind :: Tag , ref discr, discr_index, ..
1984
1974
} => {
1985
1975
let discr_type = discr. value . to_ty ( cx. tcx ) ;
1986
1976
let ( size, align) = cx. size_and_align_of ( discr_type) ;
@@ -2005,8 +1995,8 @@ fn prepare_enum_metadata(
2005
1995
} ;
2006
1996
2007
1997
let mut outer_fields = match layout. variants {
2008
- layout :: Variants :: Single { .. } => vec ! [ ] ,
2009
- layout :: Variants :: Multiple { .. } => {
1998
+ Variants :: Single { .. } => vec ! [ ] ,
1999
+ Variants :: Multiple { .. } => {
2010
2000
let tuple_mdf = TupleMemberDescriptionFactory {
2011
2001
ty : enum_type,
2012
2002
component_types : outer_field_tys,
0 commit comments