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

--- Comment #3 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Nathaniel Shead <nsh...@gcc.gnu.org>:

https://gcc.gnu.org/g:66e9a4f3083356b064cc64651edad466a56f762b

commit r16-856-g66e9a4f3083356b064cc64651edad466a56f762b
Author: Nathaniel Shead <nathanielosh...@gmail.com>
Date:   Thu May 22 22:16:22 2025 +1000

    c++/modules: Fix merge of TLS init functions [PR120363]

    The PR notes that we missed setting DECL_CONTEXT on the TLS init
    function; we missed this initially because this function is not created
    in header units, only named modules.

    I also noticed that 'DECL_CONTEXT (fn) = DECL_CONTEXT (var)' was
    incorrect: for class members, this ends up having the modules merging
    machinery treat the decl as a member function, which breaks when
    attempting to dedup against an existing completed class type.  Instead
    we can just use the global_namespace as the context, because the name of
    the function is already mangled appropriately so that we'll match the
    correct duplicates.

            PR c++/120363

    gcc/cp/ChangeLog:

            * decl2.cc (get_tls_init_fn): Set context as global_namespace.
            (get_tls_wrapper_fn): Likewise.

    gcc/testsuite/ChangeLog:

            * g++.dg/modules/pr113292_a.H: Move to...
            * g++.dg/modules/tls-1_a.H: ...here.
            * g++.dg/modules/pr113292_b.C: Move to...
            * g++.dg/modules/tls-1_b.C: ...here.
            * g++.dg/modules/pr113292_c.C: Move to...
            * g++.dg/modules/tls-1_c.C: ...here.
            * g++.dg/modules/tls-2_a.C: New test.
            * g++.dg/modules/tls-2_b.C: New test.
            * g++.dg/modules/tls-2_c.C: New test.
            * g++.dg/modules/tls-3.h: New test.
            * g++.dg/modules/tls-3_a.H: New test.
            * g++.dg/modules/tls-3_b.C: New test.

    Signed-off-by: Nathaniel Shead <nathanielosh...@gmail.com>
    Reviewed-by: Jason Merrill <ja...@redhat.com>

Reply via email to