diff options
| -rw-r--r-- | compiler/rustc_codegen_llvm/src/debuginfo/metadata/type_map.rs | 4 | ||||
| -rw-r--r-- | tests/codegen-llvm/debuginfo-cyclic-structure.rs | 32 |
2 files changed, 2 insertions, 34 deletions
diff --git a/compiler/rustc_codegen_llvm/src/debuginfo/metadata/type_map.rs b/compiler/rustc_codegen_llvm/src/debuginfo/metadata/type_map.rs index d1502d2b1e6..56fb12d3c22 100644 --- a/compiler/rustc_codegen_llvm/src/debuginfo/metadata/type_map.rs +++ b/compiler/rustc_codegen_llvm/src/debuginfo/metadata/type_map.rs @@ -285,8 +285,8 @@ pub(super) fn build_type_with_children<'ll, 'tcx>( // Item(T), // } // ``` - let is_expanding_recursive = adt_def.is_enum() - && debug_context(cx).adt_stack.borrow().iter().any(|(parent_def_id, parent_args)| { + let is_expanding_recursive = + 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()) diff --git a/tests/codegen-llvm/debuginfo-cyclic-structure.rs b/tests/codegen-llvm/debuginfo-cyclic-structure.rs deleted file mode 100644 index b8cc5447741..00000000000 --- a/tests/codegen-llvm/debuginfo-cyclic-structure.rs +++ /dev/null @@ -1,32 +0,0 @@ -//@ 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(с); -} |
