) -> 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();
+ let intrinsic_name = &*self.tcx.item_name(instance.def_id()).as_str();
match intrinsic_name {
"caller_location" => {
Ok(true)
}
- /// "Intercept" a function call because we have something special to do for it.
+ /// "Intercept" a function call to a panic-related function
+ /// because we have something special to do for it.
/// Returns `true` if an intercept happened.
- pub fn hook_fn(
+ pub fn hook_panic_fn(
&mut self,
instance: ty::Instance<'tcx>,
args: &[OpTy<'tcx, M::PointerTag>],