about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorJakob Degen <jakob.e.degen@gmail.com>2022-12-03 23:54:55 -0800
committerJakob Degen <jakob.e.degen@gmail.com>2022-12-14 01:02:35 -0800
commitc1b27eea45ef1fe330dd24dc3aa7028cb4d98e8c (patch)
treeeb09e5d2f4c69153bff0d1882c85da4d661a695b /src
parent21ee03e0621c70b894e1bfdd8c82ba5aeaabc812 (diff)
Fix unsafetyck disabling for custom MIR
Diffstat (limited to 'src')
-rw-r--r--src/test/mir-opt/building/custom/references.raw_pointer.built.after.mir10
-rw-r--r--src/test/mir-opt/building/custom/references.rs14
2 files changed, 24 insertions, 0 deletions
diff --git a/src/test/mir-opt/building/custom/references.raw_pointer.built.after.mir b/src/test/mir-opt/building/custom/references.raw_pointer.built.after.mir
new file mode 100644
index 00000000000..775e5e3ad9b
--- /dev/null
+++ b/src/test/mir-opt/building/custom/references.raw_pointer.built.after.mir
@@ -0,0 +1,10 @@
+// MIR for `raw_pointer` after built
+
+fn raw_pointer(_1: *const i32) -> *const i32 {
+    let mut _0: *const i32;              // return place in scope 0 at $DIR/references.rs:+0:38: +0:48
+
+    bb0: {
+        _0 = &raw const (*_1);           // scope 0 at $DIR/references.rs:+4:9: +4:27
+        return;                          // scope 0 at $DIR/references.rs:+5:9: +5:17
+    }
+}
diff --git a/src/test/mir-opt/building/custom/references.rs b/src/test/mir-opt/building/custom/references.rs
index dee85722e86..c93f6ec624b 100644
--- a/src/test/mir-opt/building/custom/references.rs
+++ b/src/test/mir-opt/building/custom/references.rs
@@ -36,8 +36,22 @@ pub fn immut_ref(x: &i32) -> &i32 {
     )
 }
 
+// EMIT_MIR references.raw_pointer.built.after.mir
+#[custom_mir(dialect = "built")]
+pub fn raw_pointer(x: *const i32) -> *const i32 {
+    // Regression test for a bug in which unsafetyck was not correctly turned off for
+    // `dialect = "built"`
+    mir!({
+        RET = addr_of!(*x);
+        Return()
+    })
+}
+
 fn main() {
     let mut x = 5;
     assert_eq!(*mut_ref(&mut x), 5);
     assert_eq!(*immut_ref(&x), 5);
+    unsafe {
+        assert_eq!(*raw_pointer(addr_of!(x)), 5);
+    }
 }