diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2022-11-24 21:13:36 +0000 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2022-11-25 15:01:49 +0000 |
commit | 6bd8d119227ff9a4740739e91898258bcd854b9b (patch) | |
tree | f1e8f17267f379a57c5f6f3b4da3bc1be59122af /libstdc++-v3/include | |
parent | 71f3036b8a83da7fb559923bc80687ea1dabe14a (diff) | |
download | gcc-6bd8d119227ff9a4740739e91898258bcd854b9b.zip gcc-6bd8d119227ff9a4740739e91898258bcd854b9b.tar.gz gcc-6bd8d119227ff9a4740739e91898258bcd854b9b.tar.bz2 |
libstdc++: Add always_inline to trivial iterator operations
libstdc++-v3/ChangeLog:
* include/bits/stl_iterator_base_funcs.h (__distance):
Add always_inline attribute to overload for random
access iterators.
(advance, distance, next, prev): Add always_inline attribute to
inline functions that just forward to another function.
Diffstat (limited to 'libstdc++-v3/include')
-rw-r--r-- | libstdc++-v3/include/bits/stl_iterator_base_funcs.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/libstdc++-v3/include/bits/stl_iterator_base_funcs.h b/libstdc++-v3/include/bits/stl_iterator_base_funcs.h index 1551b22..25dddb3 100644 --- a/libstdc++-v3/include/bits/stl_iterator_base_funcs.h +++ b/libstdc++-v3/include/bits/stl_iterator_base_funcs.h @@ -94,6 +94,7 @@ _GLIBCXX_END_NAMESPACE_CONTAINER } template<typename _RandomAccessIterator> + __attribute__((__always_inline__)) inline _GLIBCXX14_CONSTEXPR typename iterator_traits<_RandomAccessIterator>::difference_type __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, @@ -141,7 +142,7 @@ _GLIBCXX_END_NAMESPACE_CONTAINER * and are constant time. For other %iterator classes they are linear time. */ template<typename _InputIterator> - _GLIBCXX_NODISCARD + _GLIBCXX_NODISCARD __attribute__((__always_inline__)) inline _GLIBCXX17_CONSTEXPR typename iterator_traits<_InputIterator>::difference_type distance(_InputIterator __first, _InputIterator __last) @@ -214,6 +215,7 @@ _GLIBCXX_END_NAMESPACE_CONTAINER * and are constant time. For other %iterator classes they are linear time. */ template<typename _InputIterator, typename _Distance> + __attribute__((__always_inline__)) inline _GLIBCXX17_CONSTEXPR void advance(_InputIterator& __i, _Distance __n) { @@ -225,7 +227,7 @@ _GLIBCXX_END_NAMESPACE_CONTAINER #if __cplusplus >= 201103L template<typename _InputIterator> - _GLIBCXX_NODISCARD + _GLIBCXX_NODISCARD [[__gnu__::__always_inline__]] inline _GLIBCXX17_CONSTEXPR _InputIterator next(_InputIterator __x, typename iterator_traits<_InputIterator>::difference_type __n = 1) @@ -237,7 +239,7 @@ _GLIBCXX_END_NAMESPACE_CONTAINER } template<typename _BidirectionalIterator> - _GLIBCXX_NODISCARD + _GLIBCXX_NODISCARD [[__gnu__::__always_inline__]] inline _GLIBCXX17_CONSTEXPR _BidirectionalIterator prev(_BidirectionalIterator __x, typename iterator_traits<_BidirectionalIterator>::difference_type __n = 1) |