@@ -28,7 +28,7 @@ use rustc::mir::interpret::truncate;
28
28
use rustc_data_structures:: fingerprint:: Fingerprint ;
29
29
use rustc:: ty:: Instance ;
30
30
use 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 ,
32
32
PrimitiveExt , Size , TyLayout , VariantIdx } ;
33
33
use rustc:: ty:: subst:: { GenericArgKind , SubstsRef } ;
34
34
use rustc:: session:: config:: { self , DebugInfo } ;
@@ -385,17 +385,15 @@ fn vec_slice_metadata(
385
385
name: "data_ptr" . to_owned( ) ,
386
386
type_metadata: data_ptr_metadata,
387
387
offset: Size :: ZERO ,
388
- size: pointer_size,
389
- align: pointer_align,
388
+ mem_pos: MemoryPosition :: new( pointer_size, pointer_align) ,
390
389
flags: DIFlags :: FlagZero ,
391
390
discriminant: None ,
392
391
} ,
393
392
MemberDescription {
394
393
name: "length" . to_owned( ) ,
395
394
type_metadata: type_metadata( cx, cx. tcx. types. usize , span) ,
396
395
offset: pointer_size,
397
- size: usize_size,
398
- align: usize_align,
396
+ mem_pos: MemoryPosition :: new( usize_size, usize_align) ,
399
397
flags: DIFlags :: FlagZero ,
400
398
discriminant: None ,
401
399
} ,
@@ -496,17 +494,15 @@ fn trait_pointer_metadata(
496
494
cx. tcx. mk_mut_ptr( cx. tcx. types. u8 ) ,
497
495
syntax_pos:: DUMMY_SP ) ,
498
496
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( ) ,
501
498
flags: DIFlags :: FlagArtificial ,
502
499
discriminant: None ,
503
500
} ,
504
501
MemberDescription {
505
502
name: "vtable" . to_owned( ) ,
506
503
type_metadata: type_metadata( cx, vtable_field. ty, syntax_pos:: DUMMY_SP ) ,
507
504
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( ) ,
510
506
flags: DIFlags :: FlagArtificial ,
511
507
discriminant: None ,
512
508
} ,
@@ -1036,8 +1032,7 @@ struct MemberDescription<'ll> {
1036
1032
name : String ,
1037
1033
type_metadata : & ' ll DIType ,
1038
1034
offset : Size ,
1039
- size : Size ,
1040
- align : Align ,
1035
+ mem_pos : MemoryPosition ,
1041
1036
flags : DIFlags ,
1042
1037
discriminant : Option < u64 > ,
1043
1038
}
@@ -1054,8 +1049,8 @@ impl<'ll> MemberDescription<'ll> {
1054
1049
member_name. as_ptr ( ) ,
1055
1050
unknown_file_metadata ( cx) ,
1056
1051
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 ,
1059
1054
self . offset . bits ( ) ,
1060
1055
match self . discriminant {
1061
1056
None => None ,
@@ -1128,8 +1123,7 @@ impl<'tcx> StructMemberDescriptionFactory<'tcx> {
1128
1123
name,
1129
1124
type_metadata : type_metadata ( cx, field. ty , self . span ) ,
1130
1125
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 ( ) ,
1133
1127
flags : DIFlags :: FlagZero ,
1134
1128
discriminant : None ,
1135
1129
}
@@ -1194,8 +1188,7 @@ impl<'tcx> TupleMemberDescriptionFactory<'tcx> {
1194
1188
name : format ! ( "__{}" , i) ,
1195
1189
type_metadata : type_metadata ( cx, component_type, self . span ) ,
1196
1190
offset : layout. fields . offset ( i) ,
1197
- size,
1198
- align,
1191
+ mem_pos : MemoryPosition :: new ( size, align) ,
1199
1192
flags : DIFlags :: FlagZero ,
1200
1193
discriminant : None ,
1201
1194
}
@@ -1252,8 +1245,7 @@ impl<'tcx> UnionMemberDescriptionFactory<'tcx> {
1252
1245
name : f. ident . to_string ( ) ,
1253
1246
type_metadata : type_metadata ( cx, field. ty , self . span ) ,
1254
1247
offset : Size :: ZERO ,
1255
- size : field. pref_pos . size ,
1256
- align : field. pref_pos . align . abi ,
1248
+ mem_pos : field. pref_pos . mem_pos ( ) ,
1257
1249
flags : DIFlags :: FlagZero ,
1258
1250
discriminant : None ,
1259
1251
}
@@ -1386,8 +1378,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
1386
1378
} ,
1387
1379
type_metadata: variant_type_metadata,
1388
1380
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( ) ,
1391
1382
flags: DIFlags :: FlagZero ,
1392
1383
discriminant: None ,
1393
1384
}
@@ -1435,8 +1426,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
1435
1426
} ,
1436
1427
type_metadata : variant_type_metadata,
1437
1428
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 ( ) ,
1440
1430
flags : DIFlags :: FlagZero ,
1441
1431
discriminant : Some (
1442
1432
self . layout . ty . discriminant_for_variant ( cx. tcx , i) . unwrap ( ) . val as u64
@@ -1510,8 +1500,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
1510
1500
name,
1511
1501
type_metadata: variant_type_metadata,
1512
1502
offset: Size :: ZERO ,
1513
- size: variant. pref_pos. size,
1514
- align: variant. pref_pos. align. abi,
1503
+ mem_pos: variant. pref_pos. mem_pos( ) ,
1515
1504
flags: DIFlags :: FlagZero ,
1516
1505
discriminant: None ,
1517
1506
}
@@ -1554,8 +1543,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
1554
1543
name : variant_info. variant_name ( ) ,
1555
1544
type_metadata : variant_type_metadata,
1556
1545
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 ( ) ,
1559
1547
flags : DIFlags :: FlagZero ,
1560
1548
discriminant : niche_value,
1561
1549
}
@@ -1593,8 +1581,7 @@ impl VariantMemberDescriptionFactory<'ll, 'tcx> {
1593
1581
type_metadata ( cx, ty, self . span )
1594
1582
} ,
1595
1583
offset : self . offsets [ i] ,
1596
- size,
1597
- align,
1584
+ mem_pos : MemoryPosition :: new ( size, align) ,
1598
1585
flags : DIFlags :: FlagZero ,
1599
1586
discriminant : None ,
1600
1587
}
0 commit comments