Skip to content

Commit 07c696e

Browse files
committed
test some so-far untested intrinsics
1 parent e4eceba commit 07c696e

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

src/shims/intrinsics.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -471,7 +471,9 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
471471
"exact_div" =>
472472
this.exact_div(this.read_immediate(args[0])?, this.read_immediate(args[1])?, dest)?,
473473

474-
"forget" => {}
474+
"forget" => {
475+
// We get an argument... and forget about it.
476+
}
475477

476478
#[rustfmt::skip]
477479
| "likely"

tests/run-pass/intrinsics.rs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
11
#![feature(core_intrinsics)]
22

3-
use std::intrinsics::type_name;
3+
use std::intrinsics;
44
use std::mem::{size_of, size_of_val};
55

6+
struct Bomb;
7+
8+
impl Drop for Bomb {
9+
fn drop(&mut self) {
10+
eprintln!("BOOM!");
11+
}
12+
}
13+
614
fn main() {
715
assert_eq!(size_of::<Option<i32>>(), 8);
816
assert_eq!(size_of_val(&()), 0);
@@ -11,5 +19,10 @@ fn main() {
1119
assert_eq!(size_of_val(&[1, 2, 3] as &[i32]), 12);
1220
assert_eq!(size_of_val("foobar"), 6);
1321

14-
assert_eq!(type_name::<Option<i32>>(), "core::option::Option<i32>");
22+
assert_eq!(intrinsics::type_name::<Option<i32>>(), "core::option::Option<i32>");
23+
24+
assert_eq!(intrinsics::likely(false), false);
25+
assert_eq!(intrinsics::unlikely(true), true);
26+
27+
unsafe { intrinsics::forget(Bomb); }
1528
}

0 commit comments

Comments
 (0)