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

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Nathan Sidwell <nat...@gcc.gnu.org>:

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

commit r11-7605-gb97af562b574697a4fff7fb8c69f579c01e70dec
Author: Nathan Sidwell <nat...@acm.org>
Date:   Wed Mar 10 07:39:51 2021 -0800

    c++: Propagate assembler name from local-externs [PR 99508]

    This is another place where our one-true-decl representation breaks
    down.  The fix here propagates the assembly name to the ns-scope
    alias.  that fixes the reported problem but changes the behaviour when
    the user has explicitly declared the entity in its namespace.
    However, we didn't handle that case 'correctly' anyway before.
    Previously we'd also ignore the explicitly specified assembler name,
    now we propagate it.  It's not clear to me what the desired semantics
    would be in decorating just one of the local extern declarations this
    way.  I don't think we can really do better without propagating this
    aliasing property into the middle end (which is also needed for some
    constexpr handling, see PR97306).  I tried that before and it turned
    into a rat-hole.

            PR c++/99508
            gcc/cp/
            * decl.c (make_rtl_for_nonlocal_decl): Propagate local-extern's
            assembler name to the ns alias.
            gcc/testsuite/
            * g++.dg/ext/pr99508.C: New.

Reply via email to