diff --git a/src/librustc/mir/interpret/mod.rs b/src/librustc/mir/interpret/mod.rs index f3ed4ffab7d0f..723a30792fddc 100644 --- a/src/librustc/mir/interpret/mod.rs +++ b/src/librustc/mir/interpret/mod.rs @@ -57,11 +57,7 @@ macro_rules! throw_inval { #[macro_export] macro_rules! throw_ub { - ($($tt:tt)*) => { - return Err($crate::mir::interpret::InterpError::UndefinedBehaviour( - $crate::mir::interpret::UndefinedBehaviourInfo::$($tt)* - ).into()) - }; + ($($tt:tt)*) => { return Err(err_ub!($($tt)*).into()) }; } #[macro_export] diff --git a/src/librustc_mir/transform/const_prop.rs b/src/librustc_mir/transform/const_prop.rs index 5783f53316c57..a450ec32e1a47 100644 --- a/src/librustc_mir/transform/const_prop.rs +++ b/src/librustc_mir/transform/const_prop.rs @@ -259,6 +259,12 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> { use rustc::mir::interpret::InterpError::*; match diagnostic.error { Exit(_) => bug!("the CTFE program cannot exit"), + Unsupported(_) + | UndefinedBehaviour(_) + | InvalidProgram(_) + | ResourceExhaustion(_) => { + // Ignore these errors. + } Panic(_) => { diagnostic.report_as_lint( self.ecx.tcx, @@ -267,7 +273,6 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> { None, ); } - _ => {}, } None },