about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAaron Hill <aa1ronham@gmail.com>2019-11-06 14:13:57 -0500
committerAaron Hill <aa1ronham@gmail.com>2019-11-11 15:14:38 -0500
commitc0b972abfa4cd31d2b2d598824f578359350430f (patch)
tree7423dbc962253e31b4d9e089b95c88af53f507ec /src
parent68d9853985cf3a7eb00b6066473d6a27322ec748 (diff)
downloadrust-c0b972abfa4cd31d2b2d598824f578359350430f.tar.gz
rust-c0b972abfa4cd31d2b2d598824f578359350430f.zip
Return Ok(false) instead of throwing when handling a diverging intrinsic
Diffstat (limited to 'src')
-rw-r--r--src/librustc_mir/interpret/intrinsics.rs5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/librustc_mir/interpret/intrinsics.rs b/src/librustc_mir/interpret/intrinsics.rs
index 18d8d8c6158..66b6d4ac12c 100644
--- a/src/librustc_mir/interpret/intrinsics.rs
+++ b/src/librustc_mir/interpret/intrinsics.rs
@@ -95,11 +95,10 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
     ) -> InterpResult<'tcx, bool> {
         let substs = instance.substs;
 
-        // The intrinsic itself cannot diverge, so if we got here without a return
-        // place... (can happen e.g., for transmute returning `!`)
+        // We currently do not handle any diverging intrinsics.
         let dest = match dest {
             Some(dest) => dest,
-            None => throw_ub!(Unreachable)
+            None => return Ok(false)
         };
         let intrinsic_name = &*self.tcx.item_name(instance.def_id()).as_str();