about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2025-08-29 06:56:55 +0000
committerbors <bors@rust-lang.org>2025-08-29 06:56:55 +0000
commitfb918cec013920472f6975b2009b0339d9e8cc9c (patch)
treeb0d0806e9d5f6f0994ff958946c310e328f17536
parent085bdc2aee2772c4f392a8afcd5421a8e8b6e9e4 (diff)
parent161e29dc8486e69f8e02c1587a1abf141a413987 (diff)
downloadrust-fb918cec013920472f6975b2009b0339d9e8cc9c.tar.gz
rust-fb918cec013920472f6975b2009b0339d9e8cc9c.zip
Auto merge of #145979 - wesleywiser:revert_144407, r=jieyouxu
Revert "fix(debuginfo): disable overflow check for recursive non-enum types"

This reverts commit 49eda8edd5c99e4c65c687fff0b8e194eb339a23.

Discussed during the T-compiler triage meeting with the [decision](https://rust-lang.zulipchat.com/#narrow/channel/238009-t-compiler.2Fmeetings/topic/.5Bweekly.5D.202025-08-28/near/536614591) to revert rust-lang/rust#144407 instead of attempting a forward fix.
-rw-r--r--compiler/rustc_codegen_llvm/src/debuginfo/metadata/type_map.rs4
-rw-r--r--tests/codegen-llvm/debuginfo-cyclic-structure.rs32
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(с);
-}