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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |pinskia at gcc dot 
gnu.org

--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
So I think inside _M_range_initialize_n, we can change it to be:
      template<typename _Iterator, typename _Sentinel>
        _GLIBCXX20_CONSTEXPR
        void
        _M_range_initialize_n(_Iterator __first, _Sentinel __last,
                              size_type __n)
        {
          pointer __start = this->_M_impl._M_start =
            this->_M_allocate(_S_check_init_len(__n, _M_get_Tp_allocator()));
          this->_M_impl._M_end_of_storage = __start + __n;
          this->_M_impl._M_finish
              = std::__uninitialized_copy_a(_GLIBCXX_MOVE(__first), __last,
                                            __start, _M_get_Tp_allocator());
          if (this->_M_impl._M_finish - this->_M_impl._M_start != __n)
            __builtin_unreachable();
        }

We might want to do the same thing for _M_fill_initialize and
_M_default_initialize too.

So mine.

Reply via email to