1
1
use std:: borrow:: Cow ;
2
2
3
3
use libc:: c_uint;
4
- use rustc_abi:: { Align , Endian , Size , TagEncoding , VariantIdx , Variants } ;
4
+ use rustc_abi:: { Align , Endian , FieldIdx , Size , TagEncoding , VariantIdx , Variants } ;
5
5
use rustc_codegen_ssa:: debuginfo:: type_names:: compute_debuginfo_type_name;
6
6
use rustc_codegen_ssa:: debuginfo:: { tag_base_type, wants_c_like_enum_debuginfo} ;
7
7
use rustc_codegen_ssa:: traits:: { ConstCodegenMethods , MiscCodegenMethods } ;
@@ -401,7 +401,7 @@ fn build_union_fields_for_enum<'ll, 'tcx>(
401
401
enum_type_and_layout : TyAndLayout < ' tcx > ,
402
402
enum_type_di_node : & ' ll DIType ,
403
403
variant_indices : impl Iterator < Item = VariantIdx > + Clone ,
404
- tag_field : usize ,
404
+ tag_field : FieldIdx ,
405
405
untagged_variant_index : Option < VariantIdx > ,
406
406
) -> SmallVec < & ' ll DIType > {
407
407
let tag_base_type = tag_base_type ( cx. tcx , enum_type_and_layout) ;
@@ -806,7 +806,7 @@ fn build_union_fields_for_direct_tag_enum_or_coroutine<'ll, 'tcx>(
806
806
variant_field_infos : & [ VariantFieldInfo < ' ll > ] ,
807
807
discr_type_di_node : & ' ll DIType ,
808
808
tag_base_type : Ty < ' tcx > ,
809
- tag_field : usize ,
809
+ tag_field : FieldIdx ,
810
810
untagged_variant_index : Option < VariantIdx > ,
811
811
di_flags : DIFlags ,
812
812
) -> SmallVec < & ' ll DIType > {
@@ -859,7 +859,7 @@ fn build_union_fields_for_direct_tag_enum_or_coroutine<'ll, 'tcx>(
859
859
} ) ) ;
860
860
861
861
assert_eq ! (
862
- cx. size_and_align_of( enum_type_and_layout. field( cx, tag_field) . ty) ,
862
+ cx. size_and_align_of( enum_type_and_layout. field( cx, tag_field. as_usize ( ) ) . ty) ,
863
863
cx. size_and_align_of( self :: tag_base_type( cx. tcx, enum_type_and_layout) )
864
864
) ;
865
865
@@ -876,7 +876,7 @@ fn build_union_fields_for_direct_tag_enum_or_coroutine<'ll, 'tcx>(
876
876
Endian :: Big => ( 8 , 0 ) ,
877
877
} ;
878
878
879
- let tag_field_offset = enum_type_and_layout. fields . offset ( tag_field) . bytes ( ) ;
879
+ let tag_field_offset = enum_type_and_layout. fields . offset ( tag_field. as_usize ( ) ) . bytes ( ) ;
880
880
let lo_offset = Size :: from_bytes ( tag_field_offset + lo_offset) ;
881
881
let hi_offset = Size :: from_bytes ( tag_field_offset + hi_offset) ;
882
882
@@ -906,8 +906,8 @@ fn build_union_fields_for_direct_tag_enum_or_coroutine<'ll, 'tcx>(
906
906
cx,
907
907
enum_type_di_node,
908
908
TAG_FIELD_NAME ,
909
- enum_type_and_layout. field ( cx, tag_field) ,
910
- enum_type_and_layout. fields . offset ( tag_field) ,
909
+ enum_type_and_layout. field ( cx, tag_field. as_usize ( ) ) ,
910
+ enum_type_and_layout. fields . offset ( tag_field. as_usize ( ) ) ,
911
911
di_flags,
912
912
tag_base_type_di_node,
913
913
None ,
0 commit comments