From: Iain Buclaw Date: Mon, 12 Feb 2024 15:59:12 +0000 (+0100) Subject: d: Fix internal compiler error: in make_import, at d/imports.cc:48 [PR113125] X-Git-Tag: releases/gcc-12.4.0~378 X-Git-Url: https://gcc.gnu.org/git/?a=commitdiff_plain;h=f3567889645ce1fed79c13d644313aa2a8ab9318;p=gcc.git d: Fix internal compiler error: in make_import, at d/imports.cc:48 [PR113125] The cause of the ICE was that TYPE_DECLs were only being generated for structs with members, not opaque structs. PR d/113125 gcc/d/ChangeLog: * types.cc (TypeVisitor::visit (TypeStruct *)): Generate TYPE_DECL and apply UDAs to opaque struct declarations. gcc/testsuite/ChangeLog: * gdc.dg/imports/pr113125.d: New test. * gdc.dg/pr113125.d: New test. (cherry picked from commit b0efb1c35724e3332ee5993976efb98200c1a154) --- diff --git a/gcc/d/types.cc b/gcc/d/types.cc index c54049dfb984..6cf712fabee0 100644 --- a/gcc/d/types.cc +++ b/gcc/d/types.cc @@ -1103,6 +1103,11 @@ public: apply_user_attributes (t->sym, t->ctype); finish_aggregate_type (structsize, alignsize, t->ctype); } + else + { + build_type_decl (t->ctype, t->sym); + apply_user_attributes (t->sym, t->ctype); + } TYPE_CONTEXT (t->ctype) = d_decl_context (t->sym); build_type_decl (t->ctype, t->sym); diff --git a/gcc/testsuite/gdc.dg/imports/pr113125.d b/gcc/testsuite/gdc.dg/imports/pr113125.d new file mode 100644 index 000000000000..761e613b0552 --- /dev/null +++ b/gcc/testsuite/gdc.dg/imports/pr113125.d @@ -0,0 +1,2 @@ +module imports.pr113125; +struct S113125; diff --git a/gcc/testsuite/gdc.dg/pr113125.d b/gcc/testsuite/gdc.dg/pr113125.d new file mode 100644 index 000000000000..cb7300baa1ad --- /dev/null +++ b/gcc/testsuite/gdc.dg/pr113125.d @@ -0,0 +1,4 @@ +// { dg-do compile } +// { dg-options "-I $srcdir/gdc.dg" } +module pr113125; +import imports.pr113125: S113125;