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

--- Comment #22 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:723ef5a937dbab5e7a35761fd7f0ff0c76849340

commit r13-2618-g723ef5a937dbab5e7a35761fd7f0ff0c76849340
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Mon Sep 12 11:31:11 2022 +0200

    libstdc++: Outline the overlapping case of string _M_replace into a
separate function [PR105329]

    The following patch is partially a workaround for bogus warnings
    when the compiler isn't able to fold _M_disjunct call into constant
    false, but also an optimization attempt - assuming _M_disjunct (__s)
    is rare, the patch should shrink code size for the common case and
    use library or for non-standard instantiations an out of line
    function to handle the rare case.

    2022-09-12  Jakub Jelinek  <ja...@redhat.com>

            PR tree-optimization/105329
            * acinclude.m4 (libtool_VERSION): Change to 6:31:0.
            * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Don't export
            std::basic_string methods with name length of 15.
            (GLIBCXX_3.4.31): Export std::basic_string::_M_replace_cold.
            * testsuite/util/testsuite_abi.cc (check_version): Handle
            GLIBCXX_3.4.31.
            * include/bits/basic_string.h (std::basic_string::_M_replace_cold):
            Declare.
            * include/bits/basic_string.tcc
(std::basic_string::_M_replace_cold):
            Define and export even for C++20.
            (std::basic_string::_M_replace): Use __builtin_expect, outline
            the overlapping case to _M_replace_cold.
            * configure: Regenerated.

Reply via email to