https://gcc.gnu.org/g:959af6f669e466fd6300a3f5f25dcf44b1c0d158
commit r13-10068-g959af6f669e466fd6300a3f5f25dcf44b1c0d158 Author: Iain Buclaw <[email protected]> Date: Thu Jan 29 18:07:57 2026 +0100 d: Fix infinite loop in dump_generic_node [PR123264] PR d/123264 gcc/d/ChangeLog: * types.cc (finish_aggregate_type): Propagate struct TYPE_NAME to all TYPE_NEXT_VARIANT types. gcc/testsuite/ChangeLog: * gdc.dg/pr123264.d: New test. (cherry picked from commit 94d887ec2bab35e6eb17f68848a917689526c4e0) Diff: --- gcc/d/types.cc | 1 + gcc/testsuite/gdc.dg/pr123264.d | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/gcc/d/types.cc b/gcc/d/types.cc index 19329b210707..27fbe715c89b 100644 --- a/gcc/d/types.cc +++ b/gcc/d/types.cc @@ -707,6 +707,7 @@ finish_aggregate_type (unsigned structsize, unsigned alignsize, tree type) if (t == type) continue; + TYPE_NAME (t) = TYPE_NAME (type); TYPE_FIELDS (t) = TYPE_FIELDS (type); TYPE_LANG_SPECIFIC (t) = TYPE_LANG_SPECIFIC (type); TYPE_SIZE (t) = TYPE_SIZE (type); diff --git a/gcc/testsuite/gdc.dg/pr123264.d b/gcc/testsuite/gdc.dg/pr123264.d new file mode 100644 index 000000000000..a786c054e74c --- /dev/null +++ b/gcc/testsuite/gdc.dg/pr123264.d @@ -0,0 +1,8 @@ +// { dg-do compile } +// { dg-options "-fdump-tree-original" } +struct S123264 +{ + void infinite(const S123264) { } + auto fn = &infinite; +} +// { dg-final { scan-tree-dump "const struct S123264" "original" } }
