diff options
| author | Simonas Kazlauskas <git@kazlauskas.me> | 2021-01-14 20:10:13 +0200 |
|---|---|---|
| committer | Simonas Kazlauskas <git@kazlauskas.me> | 2021-01-16 01:34:28 +0200 |
| commit | af0d099004e1b1ffe19109fba5813aebfd435437 (patch) | |
| tree | 0c8f0de0aef082b630dde1153e1db68ee4551bc7 | |
| parent | d03fe84169d50a4b96cdef7b2f862217ab634055 (diff) | |
| download | rust-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.rs | 34 |
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 +} |
