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

--- Comment #1 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:9a6e5a437f0416627ee516f6ef5929cb30c5e498

commit r16-751-g9a6e5a437f0416627ee516f6ef5929cb30c5e498
Author: Nathaniel Shead <nathanielosh...@gmail.com>
Date:   Mon May 19 23:17:16 2025 +1000

    c++/modules: Always mark tinfo vars as TREE_ADDRESSABLE [PR120350]

    We need to mark type info decls as addressable if we take them by
    reference; this is done by walking the declaration during parsing and
    marking the decl as needed.

    However, with modules we don't stream tinfo decls directly; rather we
    stream just their name and type and reconstruct them in the importer
    directly.  This means that any addressable flags are not propagated, and
    we error because TREE_ADDRESSABLE is not set despite taking its address.

    But tinfo decls should always have TREE_ADDRESSABLE set, as any attempt
    to use the tinfo decl will go through build_address anyway.  So this
    patch fixes the issue by eagerly marking the constructed decl as
    TREE_ADDRESSABLE so that modules gets this flag correctly set as well.

            PR c++/120350

    gcc/cp/ChangeLog:

            * rtti.cc (get_tinfo_decl_direct): Mark TREE_ADDRESSABLE.

    gcc/testsuite/ChangeLog:

            * g++.dg/modules/tinfo-3_a.H: New test.
            * g++.dg/modules/tinfo-3_b.C: New test.

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

Reply via email to