* [committed] d: Build internal TypeInfo types when module name is "object"
@ 2022-08-15 19:46 Iain Buclaw
0 siblings, 0 replies; only message in thread
From: Iain Buclaw @ 2022-08-15 19:46 UTC (permalink / raw)
To: gcc-patches
Hi,
This patch is a fix-up for a previous change in r13-1070.
If for whatever reason the module declaration doesn't exist in the
object file, ensure that the internal definitions for TypeInfo and
TypeInfo_Class are still created, otherwise an ICE could occur later if
they are required for a run-time helper call.
Regression tested on x86_64-linux-gnu, and committed to mainline.
Regards,
Iain.
---
gcc/d/ChangeLog:
* d-compiler.cc (Compiler::onParseModule): Call create_tinfo_types
when module name is object.
* typeinfo.cc (create_tinfo_types): Add guard for multiple
invocations.
---
gcc/d/d-compiler.cc | 11 +++++++++--
gcc/d/typeinfo.cc | 4 ++++
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/gcc/d/d-compiler.cc b/gcc/d/d-compiler.cc
index ada9721541b..ef19df12437 100644
--- a/gcc/d/d-compiler.cc
+++ b/gcc/d/d-compiler.cc
@@ -130,8 +130,7 @@ Compiler::onParseModule (Module *m)
{
if (md->packages.length == 0)
{
- Identifier *id = (md && md->id) ? md->id : m->ident;
- if (!strcmp (id->toChars (), "object"))
+ if (!strcmp (md->id->toChars (), "object"))
{
create_tinfo_types (m);
return;
@@ -147,6 +146,14 @@ Compiler::onParseModule (Module *m)
}
}
}
+ else if (m->ident)
+ {
+ if (!strcmp (m->ident->toChars (), "object"))
+ {
+ create_tinfo_types (m);
+ return;
+ }
+ }
if (!flag_no_builtin)
d_add_builtin_module (m);
diff --git a/gcc/d/typeinfo.cc b/gcc/d/typeinfo.cc
index d1f0d59952f..3577f669ed1 100644
--- a/gcc/d/typeinfo.cc
+++ b/gcc/d/typeinfo.cc
@@ -244,6 +244,10 @@ make_frontend_typeinfo (Identifier *ident, ClassDeclaration *base = NULL)
void
create_tinfo_types (Module *mod)
{
+ /* Already generated internal types for the object module. */
+ if (object_module != NULL)
+ return;
+
/* Build the internal TypeInfo and ClassInfo types.
See TypeInfoVisitor for documentation of field layout. */
make_internal_typeinfo (TK_TYPEINFO_TYPE, Identifier::idPool ("TypeInfo"),
--
2.34.1
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-08-15 19:46 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-15 19:46 [committed] d: Build internal TypeInfo types when module name is "object" Iain Buclaw
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).