https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110287
--- Comment #8 from Jan Hubicka <hubicka at gcc dot gnu.org> --- With return value range propagation https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637265.html reduces --param max-inline-insns-auto needed for _M_realloc_insert to be inlined on my testcase from 39 to 35. This is done by eliminating two unnecesary trow calls by propagating fact that check_len does not return incredibly large values. Default inline limit at -O3 is 30, so we are not that far and I think we really ought to solve this for next release since push_back is such a common case. Is it known that check_len can not return 0 in this situation? Adding if (ret <= 0) __builtin_unreachable saves another 2 instructions because _M_realloc_insert otherwise contain a code path for case that vector gets increased to 0 elements.