Skip to content

Commit e88c405

Browse files
authored
Rollup merge of #109716 - scottmcm:field-to-fieldidx, r=oli-obk
Move `mir::Field` → `abi::FieldIdx` The first PR for rust-lang/compiler-team#606 This is just the move-and-rename, because it's plenty big already. Future PRs will start using `FieldIdx` more broadly, and concomitantly removing `FieldIdx::new`s.
2 parents 5a7ce46 + 406eb96 commit e88c405

File tree

9 files changed

+18
-18
lines changed

9 files changed

+18
-18
lines changed

src/abi/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ pub(crate) fn codegen_fn_prelude<'tcx>(fx: &mut FunctionCx<'_, '_, 'tcx>, start_
327327
ArgKind::Spread(params) => {
328328
for (i, param) in params.into_iter().enumerate() {
329329
if let Some(param) = param {
330-
place.place_field(fx, mir::Field::new(i)).write_cvalue(fx, param);
330+
place.place_field(fx, FieldIdx::new(i)).write_cvalue(fx, param);
331331
}
332332
}
333333
}
@@ -460,7 +460,7 @@ pub(crate) fn codegen_terminator_call<'tcx>(
460460
args.push(self_arg);
461461
for i in 0..tupled_arguments.len() {
462462
args.push(CallArgument {
463-
value: pack_arg.value.value_field(fx, mir::Field::new(i)),
463+
value: pack_arg.value.value_field(fx, FieldIdx::new(i)),
464464
is_owned: pack_arg.is_owned,
465465
});
466466
}

src/base.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -797,7 +797,7 @@ fn codegen_stmt<'tcx>(
797797
let index = fx.bcx.ins().iconst(fx.pointer_type, field_index as i64);
798798
variant_dest.place_index(fx, index)
799799
} else {
800-
variant_dest.place_field(fx, mir::Field::new(field_index))
800+
variant_dest.place_field(fx, FieldIdx::new(field_index))
801801
};
802802
to.write_cvalue(fx, operand);
803803
}

src/discriminant.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ pub(crate) fn codegen_set_discriminant<'tcx>(
2626
tag_encoding: TagEncoding::Direct,
2727
variants: _,
2828
} => {
29-
let ptr = place.place_field(fx, mir::Field::new(tag_field));
29+
let ptr = place.place_field(fx, FieldIdx::new(tag_field));
3030
let to = layout.ty.discriminant_for_variant(fx.tcx, variant_index).unwrap().val;
3131
let to = if ptr.layout().abi.is_signed() {
3232
ty::ScalarInt::try_from_int(
@@ -47,7 +47,7 @@ pub(crate) fn codegen_set_discriminant<'tcx>(
4747
variants: _,
4848
} => {
4949
if variant_index != untagged_variant {
50-
let niche = place.place_field(fx, mir::Field::new(tag_field));
50+
let niche = place.place_field(fx, FieldIdx::new(tag_field));
5151
let niche_type = fx.clif_type(niche.layout().ty).unwrap();
5252
let niche_value = variant_index.as_u32() - niche_variants.start().as_u32();
5353
let niche_value = (niche_value as u128).wrapping_add(niche_start);
@@ -107,7 +107,7 @@ pub(crate) fn codegen_get_discriminant<'tcx>(
107107
let cast_to = fx.clif_type(dest_layout.ty).unwrap();
108108

109109
// Read the tag/niche-encoded discriminant from memory.
110-
let tag = value.value_field(fx, mir::Field::new(tag_field));
110+
let tag = value.value_field(fx, FieldIdx::new(tag_field));
111111
let tag = tag.load_scalar(fx);
112112

113113
// Decode the discriminant (specifically if it's niche-encoded).

src/intrinsics/llvm_x86.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,8 @@ fn llvm_add_sub<'tcx>(
179179

180180
// c + carry -> c + first intermediate carry or borrow respectively
181181
let int0 = crate::num::codegen_checked_int_binop(fx, bin_op, a, b);
182-
let c = int0.value_field(fx, mir::Field::new(0));
183-
let cb0 = int0.value_field(fx, mir::Field::new(1)).load_scalar(fx);
182+
let c = int0.value_field(fx, FieldIdx::new(0));
183+
let cb0 = int0.value_field(fx, FieldIdx::new(1)).load_scalar(fx);
184184

185185
// c + carry -> c + second intermediate carry or borrow respectively
186186
let cb_in_as_u64 = fx.bcx.ins().uextend(types::I64, cb_in);

src/intrinsics/simd.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ pub(super) fn codegen_simd_intrinsic_call<'tcx>(
253253
}
254254

255255
ret.write_cvalue(fx, base);
256-
let ret_lane = ret.place_field(fx, mir::Field::new(idx.try_into().unwrap()));
256+
let ret_lane = ret.place_field(fx, FieldIdx::new(idx.try_into().unwrap()));
257257
ret_lane.write_cvalue(fx, val);
258258
}
259259

src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ mod prelude {
8686
self, FloatTy, Instance, InstanceDef, IntTy, ParamEnv, Ty, TyCtxt, TypeAndMut,
8787
TypeFoldable, TypeVisitableExt, UintTy,
8888
};
89-
pub(crate) use rustc_target::abi::{Abi, Scalar, Size, VariantIdx, FIRST_VARIANT};
89+
pub(crate) use rustc_target::abi::{Abi, FieldIdx, Scalar, Size, VariantIdx, FIRST_VARIANT};
9090

9191
pub(crate) use rustc_data_structures::fx::FxHashMap;
9292

src/unsize.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,8 @@ pub(crate) fn coerce_unsized_into<'tcx>(
147147
assert_eq!(def_a, def_b);
148148

149149
for i in 0..def_a.variant(FIRST_VARIANT).fields.len() {
150-
let src_f = src.value_field(fx, mir::Field::new(i));
151-
let dst_f = dst.place_field(fx, mir::Field::new(i));
150+
let src_f = src.value_field(fx, FieldIdx::new(i));
151+
let dst_f = dst.place_field(fx, FieldIdx::new(i));
152152

153153
if dst_f.layout().is_zst() {
154154
continue;

src/value_and_place.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ fn codegen_field<'tcx>(
1010
base: Pointer,
1111
extra: Option<Value>,
1212
layout: TyAndLayout<'tcx>,
13-
field: mir::Field,
13+
field: FieldIdx,
1414
) -> (Pointer, TyAndLayout<'tcx>) {
1515
let field_offset = layout.fields.offset(field.index());
1616
let field_layout = layout.field(&*fx, field.index());
@@ -210,7 +210,7 @@ impl<'tcx> CValue<'tcx> {
210210
pub(crate) fn value_field(
211211
self,
212212
fx: &mut FunctionCx<'_, '_, 'tcx>,
213-
field: mir::Field,
213+
field: FieldIdx,
214214
) -> CValue<'tcx> {
215215
let layout = self.1;
216216
match self.0 {
@@ -687,7 +687,7 @@ impl<'tcx> CPlace<'tcx> {
687687
pub(crate) fn place_field(
688688
self,
689689
fx: &mut FunctionCx<'_, '_, 'tcx>,
690-
field: mir::Field,
690+
field: FieldIdx,
691691
) -> CPlace<'tcx> {
692692
let layout = self.layout();
693693

src/vtable.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ pub(crate) fn get_ptr_and_method_ref<'tcx>(
5050
if let Abi::Scalar(_) = arg.layout().abi {
5151
'descend_newtypes: while !arg.layout().ty.is_unsafe_ptr() && !arg.layout().ty.is_ref() {
5252
for i in 0..arg.layout().fields.count() {
53-
let field = arg.value_field(fx, mir::Field::new(i));
53+
let field = arg.value_field(fx, FieldIdx::new(i));
5454
if !field.layout().is_zst() {
5555
// we found the one non-zero-sized field that is allowed
5656
// now find *its* non-zero-sized field, or stop if it's a
@@ -68,9 +68,9 @@ pub(crate) fn get_ptr_and_method_ref<'tcx>(
6868
if ty.is_dyn_star() {
6969
let inner_layout = fx.layout_of(arg.layout().ty.builtin_deref(true).unwrap().ty);
7070
let dyn_star = CPlace::for_ptr(Pointer::new(arg.load_scalar(fx)), inner_layout);
71-
let ptr = dyn_star.place_field(fx, mir::Field::new(0)).to_ptr();
71+
let ptr = dyn_star.place_field(fx, FieldIdx::new(0)).to_ptr();
7272
let vtable =
73-
dyn_star.place_field(fx, mir::Field::new(1)).to_cvalue(fx).load_scalar(fx);
73+
dyn_star.place_field(fx, FieldIdx::new(1)).to_cvalue(fx).load_scalar(fx);
7474
break 'block (ptr, vtable);
7575
}
7676
}

0 commit comments

Comments
 (0)