fix(debuginfo): disable overflow check for
recursive non-enum types
This commit is contained in:
parent
86ef320294
commit
49eda8edd5
2 changed files with 34 additions and 2 deletions
|
|
@ -285,8 +285,8 @@ pub(super) fn build_type_with_children<'ll, 'tcx>(
|
|||
// Item(T),
|
||||
// }
|
||||
// ```
|
||||
let is_expanding_recursive =
|
||||
debug_context(cx).adt_stack.borrow().iter().any(|(parent_def_id, parent_args)| {
|
||||
let is_expanding_recursive = adt_def.is_enum()
|
||||
&& debug_context(cx).adt_stack.borrow().iter().any(|(parent_def_id, parent_args)| {
|
||||
if def_id == *parent_def_id {
|
||||
args.iter().zip(parent_args.iter()).any(|(arg, parent_arg)| {
|
||||
if let (Some(arg), Some(parent_arg)) = (arg.as_type(), parent_arg.as_type())
|
||||
|
|
|
|||
32
tests/codegen-llvm/debuginfo-cyclic-structure.rs
Normal file
32
tests/codegen-llvm/debuginfo-cyclic-structure.rs
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
//@ 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(с);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue