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.

Reply via email to