From: Iain Buclaw Date: Thu, 29 Jan 2026 17:07:57 +0000 (+0100) Subject: d: Fix infinite loop in dump_generic_node [PR123264] X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=94d887ec2bab35e6eb17f68848a917689526c4e0;p=thirdparty%2Fgcc.git 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. --- diff --git a/gcc/d/types.cc b/gcc/d/types.cc index b09c262fc86..078ac4c9e9b 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 00000000000..a786c054e74 --- /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" } }