From ee2dc4b7287a67a4e6299d61539b742d8f73f0a6 Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Tue, 5 Nov 2019 00:22:49 -0500 Subject: [PATCH] Fix debug assertion --- src/librustc_mir/interpret/terminator.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/librustc_mir/interpret/terminator.rs b/src/librustc_mir/interpret/terminator.rs index f1e1c98e44eb..4f9e404b2c63 100644 --- a/src/librustc_mir/interpret/terminator.rs +++ b/src/librustc_mir/interpret/terminator.rs @@ -265,6 +265,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> { match instance.def { ty::InstanceDef::Intrinsic(..) => { let old_stack = self.cur_frame(); + let old_bb = self.frame().block; M::call_intrinsic(self, span, instance, args, dest, ret, unwind)?; // No stack frame gets pushed, the main loop will just act as if the // call completed. @@ -275,7 +276,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> { // then the intrinsic implementation should have // changed the stack frame (otherwise, we'll end // up trying to execute this intrinsic call again) - assert!(self.cur_frame() != old_stack); + debug_assert!(self.cur_frame() != old_stack || self.frame().block != old_bb); } if let Some(dest) = dest { self.dump_place(*dest)