diff --git a/miri/fn_call.rs b/miri/fn_call.rs index 15b67cca9397..51e5547de438 100644 --- a/miri/fn_call.rs +++ b/miri/fn_call.rs @@ -4,6 +4,7 @@ use rustc::hir::def_id::{DefId, CRATE_DEF_INDEX}; use rustc::mir; use rustc_target::spec::abi::Abi; use rustc_data_structures::indexed_vec::Idx; +use rustc_target::spec::abi::Abi; use syntax::attr; use syntax::codemap::Span; @@ -49,7 +50,7 @@ fn write_discriminant_value<'a, 'mir, 'tcx: 'a + 'mir>( if variant_index != dataful_variant { let (niche_dest, niche) = ecx.place_field(dest, mir::Field::new(0), layout)?; - let niche_value = ((variant_index - niche_variants.start) as u128) + let niche_value = ((variant_index - niche_variants.start()) as u128) .wrapping_add(niche_start); ecx.write_primval(niche_dest, PrimVal::Bytes(niche_value), niche.ty)?; } diff --git a/miri/helpers.rs b/miri/helpers.rs index 3dd499f7a62e..b941e65437d9 100644 --- a/miri/helpers.rs +++ b/miri/helpers.rs @@ -1,7 +1,9 @@ -use super::{Pointer, EvalResult, PrimVal, EvalContext}; +use mir; use rustc::ty::Ty; use rustc::ty::layout::LayoutOf; +use super::{Pointer, EvalResult, PrimVal, EvalContext}; + pub trait EvalContextExt<'tcx> { fn wrapping_pointer_offset( &self, @@ -63,7 +65,7 @@ impl<'a, 'mir, 'tcx> EvalContextExt<'tcx> for EvalContext<'a, 'mir, 'tcx, super: } Ok(ptr) } else { - err!(OverflowingMath) + err!(Overflow(mir::BinOp::Mul)) }; } } diff --git a/miri/lib.rs b/miri/lib.rs index 73437d713d01..9b1888845164 100644 --- a/miri/lib.rs +++ b/miri/lib.rs @@ -1,7 +1,8 @@ #![feature( rustc_private, catch_expr, - inclusive_range_fields + inclusive_range_fields, + inclusive_range_methods, )] #[macro_use] @@ -13,6 +14,7 @@ extern crate rustc; extern crate rustc_mir; extern crate rustc_target; extern crate rustc_data_structures; +extern crate rustc_target; extern crate syntax; extern crate regex; #[macro_use]