summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_mir_transform/src/elaborate_box_derefs.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_mir_transform/src/elaborate_box_derefs.rs')
-rw-r--r--compiler/rustc_mir_transform/src/elaborate_box_derefs.rs12
1 files changed, 7 insertions, 5 deletions
diff --git a/compiler/rustc_mir_transform/src/elaborate_box_derefs.rs b/compiler/rustc_mir_transform/src/elaborate_box_derefs.rs
index 954bb5aff..856234994 100644
--- a/compiler/rustc_mir_transform/src/elaborate_box_derefs.rs
+++ b/compiler/rustc_mir_transform/src/elaborate_box_derefs.rs
@@ -9,6 +9,7 @@ use rustc_middle::mir::patch::MirPatch;
use rustc_middle::mir::visit::MutVisitor;
use rustc_middle::mir::*;
use rustc_middle::ty::{Ty, TyCtxt};
+use rustc_target::abi::FieldIdx;
/// Constructs the types used when accessing a Box's pointer
pub fn build_ptr_tys<'tcx>(
@@ -32,9 +33,9 @@ pub fn build_projection<'tcx>(
ptr_ty: Ty<'tcx>,
) -> [PlaceElem<'tcx>; 3] {
[
- PlaceElem::Field(Field::new(0), unique_ty),
- PlaceElem::Field(Field::new(0), nonnull_ty),
- PlaceElem::Field(Field::new(0), ptr_ty),
+ PlaceElem::Field(FieldIdx::new(0), unique_ty),
+ PlaceElem::Field(FieldIdx::new(0), nonnull_ty),
+ PlaceElem::Field(FieldIdx::new(0), ptr_ty),
]
}
@@ -91,13 +92,14 @@ pub struct ElaborateBoxDerefs;
impl<'tcx> MirPass<'tcx> for ElaborateBoxDerefs {
fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
if let Some(def_id) = tcx.lang_items().owned_box() {
- let unique_did = tcx.adt_def(def_id).non_enum_variant().fields[0].did;
+ let unique_did =
+ tcx.adt_def(def_id).non_enum_variant().fields[FieldIdx::from_u32(0)].did;
let Some(nonnull_def) = tcx.type_of(unique_did).subst_identity().ty_adt_def() else {
span_bug!(tcx.def_span(unique_did), "expected Box to contain Unique")
};
- let nonnull_did = nonnull_def.non_enum_variant().fields[0].did;
+ let nonnull_did = nonnull_def.non_enum_variant().fields[FieldIdx::from_u32(0)].did;
let patch = MirPatch::new(body);