Auto merge of #1337 - RalfJung:intrinsic-tests, r=RalfJung
test some so-far untested intrinsics
This commit is contained in:
commit
5c823a1ec1
2 changed files with 18 additions and 3 deletions
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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::<Option<i32>>(), 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::<Option<i32>>(), "core::option::Option<i32>");
|
||||
assert_eq!(intrinsics::type_name::<Option<i32>>(), "core::option::Option<i32>");
|
||||
|
||||
assert_eq!(intrinsics::likely(false), false);
|
||||
assert_eq!(intrinsics::unlikely(true), true);
|
||||
|
||||
unsafe { intrinsics::forget(Bomb); }
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue