diff --git a/src/librustc_mir/const_eval/machine.rs b/src/librustc_mir/const_eval/machine.rs index 1aed91baba6a8..cafb0c6237502 100644 --- a/src/librustc_mir/const_eval/machine.rs +++ b/src/librustc_mir/const_eval/machine.rs @@ -297,6 +297,8 @@ impl<'mir, 'tcx> interpret::Machine<'mir, 'tcx> for CompileTimeInterpreter<'mir, fn find_foreign_static( _tcx: TyCtxt<'tcx>, _def_id: DefId, + _id: AllocId, + _memory_extra: &MemoryExtra, ) -> InterpResult<'tcx, Cow<'tcx, Allocation>> { throw_unsup!(ReadForeignStatic) } diff --git a/src/librustc_mir/interpret/machine.rs b/src/librustc_mir/interpret/machine.rs index 3309e9b9b622a..14822156ca20b 100644 --- a/src/librustc_mir/interpret/machine.rs +++ b/src/librustc_mir/interpret/machine.rs @@ -185,7 +185,9 @@ pub trait Machine<'mir, 'tcx>: Sized { fn find_foreign_static( tcx: TyCtxt<'tcx>, def_id: DefId, - ) -> InterpResult<'tcx, Cow<'tcx, Allocation>>; + id: AllocId, + memory_extra: &Self::MemoryExtra, + ) -> InterpResult<'tcx, Cow<'tcx, Allocation>>; /// Called for all binary operations where the LHS has pointer type. /// diff --git a/src/librustc_mir/interpret/memory.rs b/src/librustc_mir/interpret/memory.rs index 0bcdf9ae3c1f2..4f0c5940fcccc 100644 --- a/src/librustc_mir/interpret/memory.rs +++ b/src/librustc_mir/interpret/memory.rs @@ -435,7 +435,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> Memory<'mir, 'tcx, M> { // We got a "lazy" static that has not been computed yet. if tcx.is_foreign_item(def_id) { trace!("static_alloc: foreign item {:?}", def_id); - M::find_foreign_static(tcx.tcx, def_id)? + return Ok(M::find_foreign_static(tcx.tcx, def_id, id, memory_extra)?); } else { trace!("static_alloc: Need to compute {:?}", def_id); let instance = Instance::mono(tcx.tcx, def_id); diff --git a/src/librustc_mir/transform/const_prop.rs b/src/librustc_mir/transform/const_prop.rs index d645f6cf183b4..28ffe32948513 100644 --- a/src/librustc_mir/transform/const_prop.rs +++ b/src/librustc_mir/transform/const_prop.rs @@ -224,6 +224,8 @@ impl<'mir, 'tcx> interpret::Machine<'mir, 'tcx> for ConstPropMachine { fn find_foreign_static( _tcx: TyCtxt<'tcx>, _def_id: DefId, + _id: AllocId, + _memory_extra: &Self::MemoryExtra, ) -> InterpResult<'tcx, Cow<'tcx, Allocation>> { throw_unsup!(ReadForeignStatic) }