@@ -933,7 +933,7 @@ struct MemberDescription<'ll> {
933
933
size : Size ,
934
934
align : Align ,
935
935
flags : DIFlags ,
936
- discriminant : Option < u64 > ,
936
+ discriminant : Option < u128 > ,
937
937
}
938
938
939
939
// A factory for MemberDescriptions. It produces a list of member descriptions
@@ -1288,7 +1288,7 @@ impl EnumMemberDescriptionFactory<'ll, 'tcx> {
1288
1288
flags : DIFlags :: FlagZero ,
1289
1289
discriminant : Some ( self . layout . ty . ty_adt_def ( ) . unwrap ( )
1290
1290
. discriminant_for_variant ( cx. tcx , i)
1291
- . val as u64 ) ,
1291
+ . val as u128 ) ,
1292
1292
}
1293
1293
} ) . collect ( )
1294
1294
}
@@ -1842,6 +1842,7 @@ fn set_members_of_composite_type(cx: &CodegenCx<'ll, 'tcx>,
1842
1842
. into_iter ( )
1843
1843
. map ( |member_description| {
1844
1844
let member_name = CString :: new ( member_description. name ) . unwrap ( ) ;
1845
+ let align = member_description. align . bits ( ) as u64 ;
1845
1846
unsafe {
1846
1847
Some ( llvm:: LLVMRustDIBuilderCreateVariantMemberType (
1847
1848
DIB ( cx) ,
@@ -1854,7 +1855,8 @@ fn set_members_of_composite_type(cx: &CodegenCx<'ll, 'tcx>,
1854
1855
member_description. offset . bits ( ) ,
1855
1856
match member_description. discriminant {
1856
1857
None => None ,
1857
- Some ( value) => Some ( cx. const_u64 ( value) ) ,
1858
+ Some ( value) =>
1859
+ Some ( cx. const_uint_big ( cx. type_ix ( align) , value) ) ,
1858
1860
} ,
1859
1861
member_description. flags ,
1860
1862
member_description. type_metadata ) )
0 commit comments