From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2181) id 32CC2384F89E; Fri, 25 Nov 2022 15:07:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 32CC2384F89E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1669388859; bh=7pBwQgurv6C9te6X3hzkyVdfJm+KRLjHj0Ms+8HsH7U=; h=From:To:Subject:Date:From; b=YYPVdQfKO2lQw1sjfgyebPBQUY3wfo68CfEAAsWT3J6mo0zi027gYcr1d1muN+rXr rt1OSJOYXLALPjjUGIUM7JRCI0KyQMBMzU4n8gl2jJZKJnr5KvDFrm6sUAqgTV1Mom Tj0PCZNUotyKAYBuaiAmP2/T16EXO/fIJBHa00pY= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Jonathan Wakely To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc r13-4304] libstdc++: Add always_inline to trivial iterator operations X-Act-Checkin: gcc X-Git-Author: Jonathan Wakely X-Git-Refname: refs/heads/master X-Git-Oldrev: 71f3036b8a83da7fb559923bc80687ea1dabe14a X-Git-Newrev: 6bd8d119227ff9a4740739e91898258bcd854b9b Message-Id: <20221125150739.32CC2384F89E@sourceware.org> Date: Fri, 25 Nov 2022 15:07:39 +0000 (GMT) List-Id: https://gcc.gnu.org/g:6bd8d119227ff9a4740739e91898258bcd854b9b commit r13-4304-g6bd8d119227ff9a4740739e91898258bcd854b9b Author: Jonathan Wakely Date: Thu Nov 24 21:13:36 2022 +0000 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. Diff: --- libstdc++-v3/include/bits/stl_iterator_base_funcs.h | 8 +++++--- 1 file 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 1551b226ff4..25dddb3e7e8 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 + __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 - _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 + __attribute__((__always_inline__)) inline _GLIBCXX17_CONSTEXPR void advance(_InputIterator& __i, _Distance __n) { @@ -225,7 +227,7 @@ _GLIBCXX_END_NAMESPACE_CONTAINER #if __cplusplus >= 201103L template - _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 - _GLIBCXX_NODISCARD + _GLIBCXX_NODISCARD [[__gnu__::__always_inline__]] inline _GLIBCXX17_CONSTEXPR _BidirectionalIterator prev(_BidirectionalIterator __x, typename iterator_traits<_BidirectionalIterator>::difference_type __n = 1)