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.