diff --git a/src/shims/intrinsics.rs b/src/shims/intrinsics.rs index 0f17bee00887..0979cd7f062d 100644 --- a/src/shims/intrinsics.rs +++ b/src/shims/intrinsics.rs @@ -471,7 +471,9 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx "exact_div" => this.exact_div(this.read_immediate(args[0])?, this.read_immediate(args[1])?, dest)?, - "forget" => {} + "forget" => { + // We get an argument... and forget about it. + } #[rustfmt::skip] | "likely" diff --git a/tests/run-pass/intrinsics.rs b/tests/run-pass/intrinsics.rs index 754a38f63535..63439c996af0 100644 --- a/tests/run-pass/intrinsics.rs +++ b/tests/run-pass/intrinsics.rs @@ -1,8 +1,16 @@ #![feature(core_intrinsics)] -use std::intrinsics::type_name; +use std::intrinsics; use std::mem::{size_of, size_of_val}; +struct Bomb; + +impl Drop for Bomb { + fn drop(&mut self) { + eprintln!("BOOM!"); + } +} + fn main() { assert_eq!(size_of::>(), 8); assert_eq!(size_of_val(&()), 0); @@ -11,5 +19,10 @@ fn main() { assert_eq!(size_of_val(&[1, 2, 3] as &[i32]), 12); assert_eq!(size_of_val("foobar"), 6); - assert_eq!(type_name::>(), "core::option::Option"); + assert_eq!(intrinsics::type_name::>(), "core::option::Option"); + + assert_eq!(intrinsics::likely(false), false); + assert_eq!(intrinsics::unlikely(true), true); + + unsafe { intrinsics::forget(Bomb); } }