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 <ibuc...@gcc.gnu.org>:

https://gcc.gnu.org/g:b5446d0cc09e6a931065b98101d799711fd5b035

commit r10-7302-gb5446d0cc09e6a931065b98101d799711fd5b035
Author: Iain Buclaw <ibuc...@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  <ibuc...@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.

Reply via email to