@@ -28,7 +28,7 @@ use rustc::mir::interpret::truncate;
2828use rustc_data_structures:: fingerprint:: Fingerprint ;
2929use rustc:: ty:: Instance ;
3030use rustc:: ty:: { self , AdtKind , ParamEnv , Ty , TyCtxt } ;
31- use rustc:: ty:: layout:: { self , Align , Integer , IntegerExt , LayoutOf ,
31+ use rustc:: ty:: layout:: { self , MemoryPosition , Integer , IntegerExt , LayoutOf ,
3232 PrimitiveExt , Size , TyLayout , VariantIdx } ;
3333use rustc:: ty:: subst:: { GenericArgKind , SubstsRef } ;
3434use rustc:: session:: config:: { self , DebugInfo } ;
@@ -385,17 +385,15 @@ fn vec_slice_metadata(
385385 name: "data_ptr" . to_owned( ) ,
386386 type_metadata: data_ptr_metadata,
387387 offset: Size :: ZERO ,
388- size: pointer_size,
389- align: pointer_align,
388+ mem_pos: MemoryPosition :: new( pointer_size, pointer_align) ,
390389 flags: DIFlags :: FlagZero ,
391390 discriminant: None ,
392391 } ,
393392 MemberDescription {
394393 name: "length" . to_owned( ) ,
395394 type_metadata: type_metadata( cx, cx. tcx. types. usize , span) ,
396395 offset: pointer_size,
397- size: usize_size,
398- align: usize_align,
396+ mem_pos: MemoryPosition :: new( usize_size, usize_align) ,
399397 flags: DIFlags :: FlagZero ,
400398 discriminant: None ,
401399 } ,
@@ -496,17 +494,15 @@ fn trait_pointer_metadata(
496494 cx. tcx. mk_mut_ptr( cx. tcx. types. u8 ) ,
497495 syntax_pos:: DUMMY_SP ) ,
498496 offset: layout. fields. offset( 0 ) ,
499- size: data_ptr_field. pref_pos. size,
500- align: data_ptr_field. pref_pos. align. abi,
497+ mem_pos: data_ptr_field. pref_pos. mem_pos( ) ,
501498 flags: DIFlags :: FlagArtificial ,
502499 discriminant: None ,
503500 } ,
504501 MemberDescription {
505502 name: "vtable" . to_owned( ) ,
506503 type_metadata: type_metadata( cx, vtable_field. ty, syntax_pos:: DUMMY_SP ) ,
507504 offset: layout. fields. offset( 1 ) ,
508- size: vtable_field. pref_pos. size,
509- align: vtable_field. pref_pos. align. abi,
505+ mem_pos: vtable_field. pref_pos. mem_pos( ) ,
510506 flags: DIFlags :: FlagArtificial ,
511507 discriminant: None ,
512508 } ,
@@ -1036,8 +1032,7 @@ struct MemberDescription<'ll> {
10361032 name : String ,
10371033 type_metadata : & ' ll DIType ,
10381034 offset : Size ,
1039- size : Size ,
1040- align : Align ,
1035+ mem_pos : MemoryPosition ,
10411036 flags : DIFlags ,
10421037 discriminant : Option < u64 > ,
10431038}
@@ -1054,8 +1049,8 @@ impl<'ll> MemberDescription<'ll> {
10541049 member_name. as_ptr ( ) ,
10551050 unknown_file_metadata ( cx) ,
10561051 UNKNOWN_LINE_NUMBER ,
1057- self . size . bits ( ) ,
1058- self . align . bits ( ) as u32 ,
1052+ self . mem_pos . size . bits ( ) ,
1053+ self . mem_pos . align . bits ( ) as u32 ,
10591054 self . offset . bits ( ) ,
10601055 match self . discriminant {
10611056 None => None ,
@@ -1128,8 +1123,7 @@ impl<'tcx> StructMemberDescriptionFactory<'tcx> {
11281123 name,
11291124 type_metadata : type_metadata ( cx, field. ty , self . span ) ,
11301125 offset : layout. fields . offset ( i) ,
1131- size : field. pref_pos . size ,
1132- align : field. pref_pos . align . abi ,
1126+ mem_pos : field. pref_pos . mem_pos ( ) ,
11331127 flags : DIFlags :: FlagZero ,
11341128 discriminant : None ,
11351129 }
@@ -1194,8 +1188,7 @@ impl<'tcx> TupleMemberDescriptionFactory<'tcx> {
11941188 name : format ! ( "__{}" , i) ,
11951189 type_metadata : type_metadata ( cx, component_type, self . span ) ,
11961190 offset : layout. fields . offset ( i) ,
1197- size,
1198- align,
1191+ mem_pos : MemoryPosition :: new ( size, align) ,
11991192 flags : DIFlags :: FlagZero ,
12001193 discriminant : None ,
12011194 }
@@ -1252,8 +1245,7 @@ impl<'tcx> UnionMemberDescriptionFactory<'tcx> {
12521245 name : f. ident . to_string ( ) ,
12531246 type_metadata : type_metadata ( cx, field. ty , self . span ) ,
12541247 offset : Size :: ZERO ,
1255- size : field. pref_pos . size ,
1256- align : field. pref_pos . align . abi ,
1248+ mem_pos : field. pref_pos . mem_pos ( ) ,
12571249 flags : DIFlags :: FlagZero ,
12581250 discriminant : None ,
12591251 }
@@ -1386,8 +1378,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
13861378 } ,
13871379 type_metadata: variant_type_metadata,
13881380 offset: Size :: ZERO ,
1389- size: self . layout. pref_pos. size,
1390- align: self . layout. pref_pos. align. abi,
1381+ mem_pos: self . layout. pref_pos. mem_pos( ) ,
13911382 flags: DIFlags :: FlagZero ,
13921383 discriminant: None ,
13931384 }
@@ -1435,8 +1426,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
14351426 } ,
14361427 type_metadata : variant_type_metadata,
14371428 offset : Size :: ZERO ,
1438- size : self . layout . pref_pos . size ,
1439- align : self . layout . pref_pos . align . abi ,
1429+ mem_pos : self . layout . pref_pos . mem_pos ( ) ,
14401430 flags : DIFlags :: FlagZero ,
14411431 discriminant : Some (
14421432 self . layout . ty . discriminant_for_variant ( cx. tcx , i) . unwrap ( ) . val as u64
@@ -1510,8 +1500,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
15101500 name,
15111501 type_metadata: variant_type_metadata,
15121502 offset: Size :: ZERO ,
1513- size: variant. pref_pos. size,
1514- align: variant. pref_pos. align. abi,
1503+ mem_pos: variant. pref_pos. mem_pos( ) ,
15151504 flags: DIFlags :: FlagZero ,
15161505 discriminant: None ,
15171506 }
@@ -1554,8 +1543,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
15541543 name : variant_info. variant_name ( ) ,
15551544 type_metadata : variant_type_metadata,
15561545 offset : Size :: ZERO ,
1557- size : self . layout . pref_pos . size ,
1558- align : self . layout . pref_pos . align . abi ,
1546+ mem_pos : self . layout . pref_pos . mem_pos ( ) ,
15591547 flags : DIFlags :: FlagZero ,
15601548 discriminant : niche_value,
15611549 }
@@ -1593,8 +1581,7 @@ impl VariantMemberDescriptionFactory<'ll, 'tcx> {
15931581 type_metadata ( cx, ty, self . span )
15941582 } ,
15951583 offset : self . offsets [ i] ,
1596- size,
1597- align,
1584+ mem_pos : MemoryPosition :: new ( size, align) ,
15981585 flags : DIFlags :: FlagZero ,
15991586 discriminant : None ,
16001587 }
0 commit comments