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) ;
@@ -805,7 +805,7 @@ fn build_union_fields_for_direct_tag_enum_or_coroutine<'ll, 'tcx>(
805
805
variant_field_infos : & [ VariantFieldInfo < ' ll > ] ,
806
806
discr_type_di_node : & ' ll DIType ,
807
807
tag_base_type : Ty < ' tcx > ,
808
- tag_field : usize ,
808
+ tag_field : FieldIdx ,
809
809
untagged_variant_index : Option < VariantIdx > ,
810
810
di_flags : DIFlags ,
811
811
) -> SmallVec < & ' ll DIType > {
@@ -858,7 +858,7 @@ fn build_union_fields_for_direct_tag_enum_or_coroutine<'ll, 'tcx>(
858
858
} ) ) ;
859
859
860
860
assert_eq ! (
861
- cx. size_and_align_of( enum_type_and_layout. field( cx, tag_field) . ty) ,
861
+ cx. size_and_align_of( enum_type_and_layout. field( cx, tag_field. as_usize ( ) ) . ty) ,
862
862
cx. size_and_align_of( self :: tag_base_type( cx. tcx, enum_type_and_layout) )
863
863
) ;
864
864
@@ -875,7 +875,7 @@ fn build_union_fields_for_direct_tag_enum_or_coroutine<'ll, 'tcx>(
875
875
Endian :: Big => ( 8 , 0 ) ,
876
876
} ;
877
877
878
- let tag_field_offset = enum_type_and_layout. fields . offset ( tag_field) . bytes ( ) ;
878
+ let tag_field_offset = enum_type_and_layout. fields . offset ( tag_field. as_usize ( ) ) . bytes ( ) ;
879
879
let lo_offset = Size :: from_bytes ( tag_field_offset + lo_offset) ;
880
880
let hi_offset = Size :: from_bytes ( tag_field_offset + hi_offset) ;
881
881
@@ -905,8 +905,8 @@ fn build_union_fields_for_direct_tag_enum_or_coroutine<'ll, 'tcx>(
905
905
cx,
906
906
enum_type_di_node,
907
907
TAG_FIELD_NAME ,
908
- enum_type_and_layout. field ( cx, tag_field) ,
909
- enum_type_and_layout. fields . offset ( tag_field) ,
908
+ enum_type_and_layout. field ( cx, tag_field. as_usize ( ) ) ,
909
+ enum_type_and_layout. fields . offset ( tag_field. as_usize ( ) ) ,
910
910
di_flags,
911
911
tag_base_type_di_node,
912
912
None ,
0 commit comments