rust/tests/ui/mir/ssa-analysis-regression-50041.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

37 lines
642 B
Rust
Raw Normal View History

// build-pass
// compile-flags: -Z mir-opt-level=4
2022-05-13 23:53:03 -05:00
#![crate_type = "lib"]
#![feature(lang_items)]
#![no_std]
2022-05-08 23:23:52 -05:00
struct NonNull<T: ?Sized>(*const T);
2022-05-13 23:53:03 -05:00
struct Unique<T: ?Sized>(NonNull<T>);
#[lang = "owned_box"]
2022-05-13 23:53:03 -05:00
pub struct Box<T: ?Sized>(Unique<T>);
impl<T: ?Sized> Drop for Box<T> {
2022-05-13 23:53:03 -05:00
fn drop(&mut self) {}
}
#[lang = "box_free"]
#[inline(always)]
2022-05-13 23:53:03 -05:00
unsafe fn box_free<T: ?Sized>(ptr: Unique<T>) {
dealloc(ptr.0.0)
}
#[inline(never)]
2022-05-08 23:23:52 -05:00
fn dealloc<T: ?Sized>(_: *const 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
}