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

--- Comment #33 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jan Hubicka <hubi...@gcc.gnu.org>:

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

commit r15-5361-gaac5c57ee167230cea466064951daf06e42197b9
Author: Jan Hubicka <hubi...@ucw.cz>
Date:   Sun Nov 17 01:21:04 2024 +0100

    Add __builtion_unreachable to vector::size(), vector::capacity()

    This patch makes it clear that vector sizes and capacities are not
    negative.  With recent change to ipa-fnsummary this should not affect
    inlining and improves codegen of some vector manipulation functions.

    I tested clang build.  Looking for throw_bad calls there are only 3
    called considerably often (bad_allloc, bad_array_new_length and
    function_callv).
    The patch seems to reduce bad_alloc and bad_array_new_length calls
    considerably:

    bad_alloc 380->147
    bad_array_new_length 832->128

    libstdc++-v3/ChangeLog:

            PR tree-optimization/109442
            * include/bits/stl_vector.h: (vector::size(),
            vector::capacity()): Add __builtin_unreachable call to announce
            that size and capacity are non-negative.

    gcc/testsuite/ChangeLog:

            PR tree-optimization/109442
            * g++.dg/tree-ssa/pr109442.C: New test.

Reply via email to