https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99914

--- Comment #5 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:bda519596543e49f77914b5677693e86be5d01d0

commit r11-8234-gbda519596543e49f77914b5677693e86be5d01d0
Author: Iain Buclaw <ibuc...@gdcproject.org>
Date:   Tue Apr 13 22:28:55 2021 +0200

    d: Add TARGET_D_TEMPLATES_ALWAYS_COMDAT

    Following up on the fix for PR99914, when testing on MinGW, it was found
    not to support weak in the same way as on ELF or Mach-O targets.

    So the linkage has been reverted back to COMDAT for that target, however
    in order to properly support overriding functions and variables, all
    declarations with external linkage must be put on COMDAT.  For this a
    new target hook has been added to control the behavior.

    gcc/ChangeLog:

            PR d/99914
            * config/i386/winnt-d.c (TARGET_D_TEMPLATES_ALWAYS_COMDAT): Define.
            * doc/tm.texi: Regenerate.
            * doc/tm.texi.in (D language and ABI): Add @hook for
            TARGET_D_TEMPLATES_ALWAYS_COMDAT.

    gcc/d/ChangeLog:

            PR d/99914
            * d-target.def (d_templates_always_comdat): New hook.
            * d-tree.h (mark_needed): Remove prototype.
            * decl.cc: Include d-target.h.
            (mark_needed): Rename to...
            (d_mark_needed): ...this.  Make static.
            (set_linkage_for_decl): Put variables in comdat if
            d_templates_always_comdat.

Reply via email to