mirror of git://gcc.gnu.org/git/gcc.git
Tweak vector::_M_realloc_insert for code size
2017-11-17 Marc Glisse <marc.glisse@inria.fr> * include/bits/vector.tcc (vector::_M_realloc_insert): Cache old values before the allocation. From-SVN: r254849
This commit is contained in:
parent
b1e35f49e8
commit
c261ba2c8b
|
|
@ -1,3 +1,8 @@
|
||||||
|
2017-11-17 Marc Glisse <marc.glisse@inria.fr>
|
||||||
|
|
||||||
|
* include/bits/vector.tcc (vector::_M_realloc_insert): Cache old
|
||||||
|
values before the allocation.
|
||||||
|
|
||||||
2017-11-16 Jonathan Wakely <jwakely@redhat.com>
|
2017-11-16 Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
|
||||||
* include/std/future (shared_future): Add noexcept to copy constructor
|
* include/std/future (shared_future): Add noexcept to copy constructor
|
||||||
|
|
|
||||||
|
|
@ -421,6 +421,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
{
|
{
|
||||||
const size_type __len =
|
const size_type __len =
|
||||||
_M_check_len(size_type(1), "vector::_M_realloc_insert");
|
_M_check_len(size_type(1), "vector::_M_realloc_insert");
|
||||||
|
pointer __old_start = this->_M_impl._M_start;
|
||||||
|
pointer __old_finish = this->_M_impl._M_finish;
|
||||||
const size_type __elems_before = __position - begin();
|
const size_type __elems_before = __position - begin();
|
||||||
pointer __new_start(this->_M_allocate(__len));
|
pointer __new_start(this->_M_allocate(__len));
|
||||||
pointer __new_finish(__new_start);
|
pointer __new_finish(__new_start);
|
||||||
|
|
@ -442,14 +444,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
|
|
||||||
__new_finish
|
__new_finish
|
||||||
= std::__uninitialized_move_if_noexcept_a
|
= std::__uninitialized_move_if_noexcept_a
|
||||||
(this->_M_impl._M_start, __position.base(),
|
(__old_start, __position.base(),
|
||||||
__new_start, _M_get_Tp_allocator());
|
__new_start, _M_get_Tp_allocator());
|
||||||
|
|
||||||
++__new_finish;
|
++__new_finish;
|
||||||
|
|
||||||
__new_finish
|
__new_finish
|
||||||
= std::__uninitialized_move_if_noexcept_a
|
= std::__uninitialized_move_if_noexcept_a
|
||||||
(__position.base(), this->_M_impl._M_finish,
|
(__position.base(), __old_finish,
|
||||||
__new_finish, _M_get_Tp_allocator());
|
__new_finish, _M_get_Tp_allocator());
|
||||||
}
|
}
|
||||||
__catch(...)
|
__catch(...)
|
||||||
|
|
@ -463,10 +465,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
__throw_exception_again;
|
__throw_exception_again;
|
||||||
}
|
}
|
||||||
_GLIBCXX_ASAN_ANNOTATE_REINIT;
|
_GLIBCXX_ASAN_ANNOTATE_REINIT;
|
||||||
std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
|
std::_Destroy(__old_start, __old_finish, _M_get_Tp_allocator());
|
||||||
_M_get_Tp_allocator());
|
_M_deallocate(__old_start,
|
||||||
_M_deallocate(this->_M_impl._M_start,
|
this->_M_impl._M_end_of_storage - __old_start);
|
||||||
this->_M_impl._M_end_of_storage - this->_M_impl._M_start);
|
|
||||||
this->_M_impl._M_start = __new_start;
|
this->_M_impl._M_start = __new_start;
|
||||||
this->_M_impl._M_finish = __new_finish;
|
this->_M_impl._M_finish = __new_finish;
|
||||||
this->_M_impl._M_end_of_storage = __new_start + __len;
|
this->_M_impl._M_end_of_storage = __new_start + __len;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue