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

--- Comment #13 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jonathan Wakely <r...@gcc.gnu.org>:

https://gcc.gnu.org/g:6af8d8e618ed27dae3432c96484de4360bd893ab

commit r15-1342-g6af8d8e618ed27dae3432c96484de4360bd893ab
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Tue Jun 11 15:52:30 2024 +0100

    libstdc++: Make std::type_info::operator== always_inline for C++23
[PR110572]

    Commit r12-6266-g3633cc54284450 implemented P1328 for C++23, making
    std::type_info::operator== usable in constant expressions. For targets
    such as mingw-w64 where that function was not previously inline, making
    it constexpr required making it inline for C++23 and later. For
    statically linked programs this can result in multiple definition
    errors, because there's a non-inline definition in libstdc++.a as well.

    For those targets make it always_inline for C++23, so that there is no
    symbol generated for the inline definition, and the non-inline
    definition in libstdc++.a will be the only definition.

    libstdc++-v3/ChangeLog:

            PR libstdc++/110572
            * libsupc++/typeinfo (type_info::operator==): Add always_inline
            attribute for targets where the ABI requries equality to be
            non-inline.
            * testsuite/18_support/type_info/110572.cc: New test.

Reply via email to