Auto merge of #145979 - wesleywiser:revert_144407, r=jieyouxu

Revert "fix(debuginfo): disable overflow check for recursive non-enum types"

This reverts commit 49eda8edd5.

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.
This commit is contained in:
bors 2025-08-29 06:56:55 +00:00
commit fb918cec01
2 changed files with 2 additions and 34 deletions

View file

@ -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())

View file

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