]> git.lizzy.rs Git - rust.git/commitdiff
test some so-far untested intrinsics
authorRalf Jung <post@ralfj.de>
Wed, 15 Apr 2020 16:00:16 +0000 (18:00 +0200)
committerRalf Jung <post@ralfj.de>
Wed, 15 Apr 2020 16:00:16 +0000 (18:00 +0200)
src/shims/intrinsics.rs
tests/run-pass/intrinsics.rs

index 0f17bee0088752954cdce807326f868d36d8320c..0979cd7f062d060d58d8499ecf746f84eaedb032 100644 (file)
@@ -471,7 +471,9 @@ fn call_intrinsic(
             "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"
index 754a38f63535b38eba2be568edc22efbd1b6269c..63439c996af0ae9c4301d184c6bced45a4c53726 100644 (file)
@@ -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); }
 }