https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113835
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |redi at gcc dot gnu.org
--- Comment #11 from Jason Merrill <jason at gcc dot gnu.org> ---
One issue is this in stl_uninitialized.h:
__uninitialized_default_n(_ForwardIterator __first, _Size __n)
{
#ifdef __cpp_lib_is_constant_evaluated
if (std::is_constant_evaluated())
return __uninitialized_default_n_1<false>::
__uninit_default_n(__first, __n);
#endif
The <false> forces us to go take the non-trivial initialization path even for a
range of ints. Disabling this 'if' so we can take the trivial path speeds up
compilation by about 35%. We still hit constexpr_loop_limit, since __fill_a1
is also a loop (since we don't support constexpr __builtin_memset yet) but we
get there a lot faster.