Files
rust/tests/codegen-llvm/debuginfo-cyclic-structure.rs

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

33 lines
924 B
Rust
Raw Permalink Normal View History

//@ compile-flags:-g -Copt-level=0 -C panic=abort
// Check that debug information exists for structures containing loops (cyclic references).
// Previously it may incorrectly prune member information during recursive type inference check.
// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "Arc<debuginfo_cyclic_structure::Inner<alloc::sync::Arc<debuginfo_cyclic_structure::Handle{{.*}}elements: ![[FIELDS:[0-9]+]]
// CHECK: ![[FIELDS]] = !{!{{.*}}}
// CHECK-NOT: ![[FIELDS]] = !{}
#![crate_type = "lib"]
use std::mem::MaybeUninit;
use std::sync::Arc;
struct Inner<T> {
buffer: Box<MaybeUninit<T>>,
}
struct Shared {
shared: Arc<Inner<Arc<Handle>>>,
}
struct Handle {
shared: Shared,
}
struct Core {
inner: Arc<Inner<Arc<Handle>>>,
}
#[no_mangle]
extern "C" fn test() {
let с = Core { inner: Arc::new(Inner { buffer: Box::new(MaybeUninit::uninit()) }) };
std::hint::black_box(с);
}