aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2025-01-07 15:17:19 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2025-01-08 12:45:39 +0000
commit96c32a599c950491f98277d0a15e1266982cf16f (patch)
tree5dc9e4176aee98d4d0ab79a005a95bded905f2c7
parent6b4ff53381250c56ecfc69204e662d8832d113e5 (diff)
downloadgcc-96c32a599c950491f98277d0a15e1266982cf16f.zip
gcc-96c32a599c950491f98277d0a15e1266982cf16f.tar.gz
gcc-96c32a599c950491f98277d0a15e1266982cf16f.tar.bz2
libstdc++: Add always_inline to casting/forwarding functions in bits/move.h
libstdc++-v3/ChangeLog: * include/bits/move.h (__addressof, forward, forward_like, move) (move_if_noexcept, addressof): Add always_inline attribute. Replace _GLIBCXX_NODISCARD with [[__nodiscard__]].
-rw-r--r--libstdc++-v3/include/bits/move.h15
1 files changed, 8 insertions, 7 deletions
diff --git a/libstdc++-v3/include/bits/move.h b/libstdc++-v3/include/bits/move.h
index 55a9690..e91b003 100644
--- a/libstdc++-v3/include/bits/move.h
+++ b/libstdc++-v3/include/bits/move.h
@@ -47,6 +47,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
* @ingroup utilities
*/
template<typename _Tp>
+ __attribute__((__always_inline__))
inline _GLIBCXX_CONSTEXPR _Tp*
__addressof(_Tp& __r) _GLIBCXX_NOEXCEPT
{ return __builtin_addressof(__r); }
@@ -66,7 +67,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
* @since C++11
*/
template<typename _Tp>
- _GLIBCXX_NODISCARD
+ [[__nodiscard__,__gnu__::__always_inline__]]
constexpr _Tp&&
forward(typename std::remove_reference<_Tp>::type& __t) noexcept
{ return static_cast<_Tp&&>(__t); }
@@ -79,7 +80,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
* @since C++11
*/
template<typename _Tp>
- _GLIBCXX_NODISCARD
+ [[__nodiscard__,__gnu__::__always_inline__]]
constexpr _Tp&&
forward(typename std::remove_reference<_Tp>::type&& __t) noexcept
{
@@ -119,7 +120,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
* @since C++23
*/
template<typename _Tp, typename _Up>
- [[nodiscard]]
+ [[nodiscard,__gnu__::__always_inline__]]
constexpr __like_t<_Tp, _Up>
forward_like(_Up&& __x) noexcept
{ return static_cast<__like_t<_Tp, _Up>>(__x); }
@@ -132,7 +133,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
* @since C++11
*/
template<typename _Tp>
- _GLIBCXX_NODISCARD
+ [[__nodiscard__,__gnu__::__always_inline__]]
constexpr typename std::remove_reference<_Tp>::type&&
move(_Tp&& __t) noexcept
{ return static_cast<typename std::remove_reference<_Tp>::type&&>(__t); }
@@ -153,7 +154,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
* @since C++11
*/
template<typename _Tp>
- _GLIBCXX_NODISCARD
+ [[__nodiscard__,__gnu__::__always_inline__]]
constexpr
__conditional_t<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&>
move_if_noexcept(_Tp& __x) noexcept
@@ -170,10 +171,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
* @since C++11
*/
template<typename _Tp>
- _GLIBCXX_NODISCARD
+ [[__nodiscard__,__gnu__::__always_inline__]]
inline _GLIBCXX17_CONSTEXPR _Tp*
addressof(_Tp& __r) noexcept
- { return __builtin_addressof(__r); }
+ { return std::__addressof(__r); }
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 2598. addressof works on temporaries