diff --git a/rust-version b/rust-version index f7618eadd9f0..8fb4c0987318 100644 --- a/rust-version +++ b/rust-version @@ -1 +1 @@ -084edc426f2e7e4bbedb5c6afa7fc422a52ee379 +aa69777ea2902208b24b3fd77767d577ceaf6386 diff --git a/src/machine.rs b/src/machine.rs index 7904e1cc123b..c07fca68199c 100644 --- a/src/machine.rs +++ b/src/machine.rs @@ -14,8 +14,7 @@ use rustc::ty::{ layout::{LayoutOf, Size}, Ty, TyCtxt, }; -use syntax::attr; -use syntax::symbol::sym; +use syntax::{attr, source_map::Span, symbol::sym}; use crate::*; @@ -192,11 +191,12 @@ impl<'mir, 'tcx> Machine<'mir, 'tcx> for Evaluator<'tcx> { #[inline(always)] fn call_intrinsic( ecx: &mut rustc_mir::interpret::InterpCx<'mir, 'tcx, Self>, + span: Span, instance: ty::Instance<'tcx>, args: &[OpTy<'tcx, Tag>], dest: PlaceTy<'tcx, Tag>, ) -> InterpResult<'tcx> { - ecx.call_intrinsic(instance, args, dest) + ecx.call_intrinsic(span, instance, args, dest) } #[inline(always)] diff --git a/src/shims/intrinsics.rs b/src/shims/intrinsics.rs index 5ef7fba7f590..9e47c095d6d3 100644 --- a/src/shims/intrinsics.rs +++ b/src/shims/intrinsics.rs @@ -5,6 +5,7 @@ use rustc::mir; use rustc::mir::interpret::{InterpResult, PointerArithmetic}; use rustc::ty::layout::{self, LayoutOf, Size, Align}; use rustc::ty; +use syntax::source_map::Span; use crate::{ PlaceTy, OpTy, Immediate, Scalar, Tag, @@ -15,12 +16,13 @@ impl<'mir, 'tcx> EvalContextExt<'mir, 'tcx> for crate::MiriEvalContext<'mir, 'tc pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx> { fn call_intrinsic( &mut self, + span: Span, instance: ty::Instance<'tcx>, args: &[OpTy<'tcx, Tag>], dest: PlaceTy<'tcx, Tag>, ) -> InterpResult<'tcx> { let this = self.eval_context_mut(); - if this.emulate_intrinsic(instance, args, dest)? { + if this.emulate_intrinsic(span, instance, args, dest)? { return Ok(()); } let tcx = &{this.tcx.tcx};