Optimize std::advance for single increments
* include/bits/stl_iterator_base_funcs.h (__advance<_RandomAccessIterator, _Distance>): Optimize for next/prev cases where incrementing or decrementing a single step. From-SVN: r248875
This commit is contained in:
parent
d08606ce6c
commit
6c24177862
@ -1,5 +1,9 @@
|
||||
2017-06-05 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* include/bits/stl_iterator_base_funcs.h
|
||||
(__advance<_RandomAccessIterator, _Distance>): Optimize for next/prev
|
||||
cases where incrementing or decrementing a single step.
|
||||
|
||||
* include/bits/shared_ptr_base.h (__shared_ptr::owner_before)
|
||||
(__weak_ptr::owner_before, _Sp_owner_less::operator()): Add noexcept
|
||||
specifiers as per LWG 2873 and LWG 2942.
|
||||
|
@ -177,7 +177,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
// concept requirements
|
||||
__glibcxx_function_requires(_RandomAccessIteratorConcept<
|
||||
_RandomAccessIterator>)
|
||||
__i += __n;
|
||||
if (__builtin_constant_p(__n) && __n == 1)
|
||||
++__i;
|
||||
else if (__builtin_constant_p(__n) && __n == -1)
|
||||
--__i;
|
||||
else
|
||||
__i += __n;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user