diff options
author | Iain Buclaw <ibuclaw@gdcproject.org> | 2021-06-10 19:59:23 +0200 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gdcproject.org> | 2021-06-10 20:19:39 +0200 |
commit | 5ae4a73057dd26e7f09b5ba5190b84b1bbea4368 (patch) | |
tree | 51bc8761d7715410f1e4b7e6a5ad4480ac3d9ab7 /gcc/d/d-tree.h | |
parent | 7a895955095b6f4d9fcf3b6686dc1113591da28d (diff) | |
download | gcc-5ae4a73057dd26e7f09b5ba5190b84b1bbea4368.zip gcc-5ae4a73057dd26e7f09b5ba5190b84b1bbea4368.tar.gz gcc-5ae4a73057dd26e7f09b5ba5190b84b1bbea4368.tar.bz2 |
d: Fix ICE in TypeInfoDeclaration, at dmd/declaration.c (PR100967)
Generate a stub TypeInfo class even if the root Object class is missing.
The front-end will take care of issuing an error and abort the
compilation when running semantic on constructed TypeInfo objects.
The errors issued by the code generation pass relating to missing or
disabled RTTI has been consolidated into a single function, so that a
meaningful error will be emitted before the front-end terminates.
gcc/d/ChangeLog:
PR d/100967
* d-frontend.cc (getTypeInfoType): Move TypeInfo checks to
check_typeinfo_type and call new function.
* d-tree.h (check_typeinfo_type): Declare.
* typeinfo.cc: Include dmd/scope.h.
(create_frontend_tinfo_types): Generate front-end types even if Object
is missing.
(build_typeinfo): Move TypeInfo checks to check_typeinfo_type and call
new function.
(check_typeinfo_type): New function.
gcc/testsuite/ChangeLog:
PR d/100967
* gdc.dg/pr100967.d: New test.
Diffstat (limited to 'gcc/d/d-tree.h')
-rw-r--r-- | gcc/d/d-tree.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/d/d-tree.h b/gcc/d/d-tree.h index bb731a6..6ef9af2 100644 --- a/gcc/d/d-tree.h +++ b/gcc/d/d-tree.h @@ -670,6 +670,7 @@ extern tree layout_classinfo (ClassDeclaration *); extern unsigned base_vtable_offset (ClassDeclaration *, BaseClass *); extern tree get_typeinfo_decl (TypeInfoDeclaration *); extern tree get_classinfo_decl (ClassDeclaration *); +extern void check_typeinfo_type (const Loc &, Scope *); extern tree build_typeinfo (const Loc &, Type *); extern void create_typeinfo (Type *, Module *); extern void create_tinfo_types (Module *); |