about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSimonas Kazlauskas <git@kazlauskas.me>2021-01-14 20:10:13 +0200
committerSimonas Kazlauskas <git@kazlauskas.me>2021-01-16 01:34:28 +0200
commitaf0d099004e1b1ffe19109fba5813aebfd435437 (patch)
tree0c8f0de0aef082b630dde1153e1db68ee4551bc7
parentd03fe84169d50a4b96cdef7b2f862217ab634055 (diff)
downloadrust-af0d099004e1b1ffe19109fba5813aebfd435437.tar.gz
rust-af0d099004e1b1ffe19109fba5813aebfd435437.zip
Add a regression test for #50041
AFAICT the test case never landed alongside the fix for the issue.
-rw-r--r--src/test/ui/mir/ssa-analysis-regression-50041.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/test/ui/mir/ssa-analysis-regression-50041.rs b/src/test/ui/mir/ssa-analysis-regression-50041.rs
new file mode 100644
index 00000000000..c818f2976e1
--- /dev/null
+++ b/src/test/ui/mir/ssa-analysis-regression-50041.rs
@@ -0,0 +1,34 @@
+// build-pass
+// compile-flags: -Z mir-opt-level=3
+
+#![crate_type="lib"]
+#![feature(lang_items)]
+#![no_std]
+
+#[lang = "owned_box"]
+pub struct Box<T: ?Sized>(*mut T);
+
+impl<T: ?Sized> Drop for Box<T> {
+    fn drop(&mut self) {
+    }
+}
+
+#[lang = "box_free"]
+#[inline(always)]
+unsafe fn box_free<T: ?Sized>(ptr: *mut T) {
+    dealloc(ptr)
+}
+
+#[inline(never)]
+fn dealloc<T: ?Sized>(_: *mut T) {
+}
+
+pub struct Foo<T>(T);
+
+pub fn foo(a: Option<Box<Foo<usize>>>) -> usize {
+    let f = match a {
+        None => Foo(0),
+        Some(vec) => *vec,
+    };
+    f.0
+}