rust/tests/codegen-llvm/debuginfo-cyclic-structure.rs
godzie44 49eda8edd5 fix(debuginfo): disable overflow check for
recursive non-enum types
2025-07-27 14:42:07 +03:00

33 lines
924 B
Rust
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//@ 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(с);
}