[Bug lto/91027] [10 regression] SEGV in hash_table<odr_name_hasher, false, xcallocator>::find_slot_with_hash
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Mar 20 16:26:45 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91027
--- Comment #12 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Iain Buclaw <ibuclaw@gcc.gnu.org>:
https://gcc.gnu.org/g:b5446d0cc09e6a931065b98101d799711fd5b035
commit r10-7302-gb5446d0cc09e6a931065b98101d799711fd5b035
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Fri Mar 20 17:26:29 2020 +0100
d: Fix SEGV in hash_table<odr_name_hasher, false,
xcallocator>::find_slot_with_hash
This patch fixes LTO bug with the D front-end. As DECL_ASSEMBLER_NAME
is set on the TYPE_DECL, so TYPE_CXX_ODR_P must also be set on the type.
The addition of merge_aggregate_types is not strictly needed now, but it
fixes a problem introduced in newer versions of the dmd front-end where
templated types could be sent more than once to the D code generator.
gcc/d/ChangeLog:
2020-03-20 Iain Buclaw <ibuclaw@gdcproject.org>
PR lto/91027
* d-tree.h (struct GTY): Add daggregate field.
(IDENTIFIER_DAGGREGATE): Define.
(d_mangle_decl): Add declaration.
* decl.cc (mangle_decl): Remove static linkage, rename to...
(d_mangle_decl): ...this, update all callers.
* types.cc (merge_aggregate_types): New function.
(TypeVisitor::visit (TypeStruct *)): Call merge_aggregate_types,
set
IDENTIFIER_DAGGREGATE and TYPE_CXX_ODR_P.
(TypeVisitor::visit (TypeClass *)): Likewise.
More information about the Gcc-bugs
mailing list