In r16-1911-g6596f5ab746533 I claimed to have reordered some attributes
for compatibility with Clang, but it looks like I got the Clang
restriction backwards and put them all in the wrong order.

libstdc++-v3/ChangeLog:

        PR libstdc++/120949
        * include/bits/stl_iterator.h (__normal_iterator): Fix order of
        always_inline and nodiscard attributes for Clang compatibility.
---

Tested x86_64-linux, and tested lightly with Clang.

 libstdc++-v3/include/bits/stl_iterator.h | 30 +++++++++++++-----------
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/libstdc++-v3/include/bits/stl_iterator.h 
b/libstdc++-v3/include/bits/stl_iterator.h
index a7188f46f6db..75e794f6c020 100644
--- a/libstdc++-v3/include/bits/stl_iterator.h
+++ b/libstdc++-v3/include/bits/stl_iterator.h
@@ -1211,7 +1211,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #else
        // Forward iterator requirements
       template<typename _Iter>
-       __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
+       _GLIBCXX_NODISCARD __attribute__((__always_inline__))
        friend
        _GLIBCXX_CONSTEXPR
        bool
@@ -1220,7 +1220,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        _GLIBCXX_NOEXCEPT
        { return __lhs.base() == __rhs.base(); }
 
-      __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
+      _GLIBCXX_NODISCARD __attribute__((__always_inline__))
       friend
       _GLIBCXX_CONSTEXPR
       bool
@@ -1229,7 +1229,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       { return __lhs.base() == __rhs.base(); }
 
       template<typename _Iter>
-       __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
+       _GLIBCXX_NODISCARD __attribute__((__always_inline__))
        friend
        _GLIBCXX_CONSTEXPR
        bool
@@ -1238,7 +1238,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        _GLIBCXX_NOEXCEPT
        { return __lhs.base() != __rhs.base(); }
 
-      __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
+      _GLIBCXX_NODISCARD __attribute__((__always_inline__))
       friend
       _GLIBCXX_CONSTEXPR
       bool
@@ -1248,15 +1248,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       // Random access iterator requirements
       template<typename _Iter>
+       _GLIBCXX_NODISCARD __attribute__((__always_inline__))
        friend
-       __attribute__((__always_inline__)) _GLIBCXX_NODISCARD _GLIBCXX_CONSTEXPR
+       _GLIBCXX_CONSTEXPR
        inline bool
        operator<(const __normal_iterator& __lhs,
                  const __normal_iterator<_Iter, _Container>& __rhs)
        _GLIBCXX_NOEXCEPT
        { return __lhs.base() < __rhs.base(); }
 
-      __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
+      _GLIBCXX_NODISCARD __attribute__((__always_inline__))
       friend
       _GLIBCXX20_CONSTEXPR
       bool
@@ -1265,15 +1266,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       { return __lhs.base() < __rhs.base(); }
 
       template<typename _Iter>
+       _GLIBCXX_NODISCARD __attribute__((__always_inline__))
        friend
-       __attribute__((__always_inline__)) _GLIBCXX_NODISCARD _GLIBCXX_CONSTEXPR
+       _GLIBCXX_CONSTEXPR
        bool
        operator>(const __normal_iterator& __lhs,
                  const __normal_iterator<_Iter, _Container>& __rhs)
        _GLIBCXX_NOEXCEPT
        { return __lhs.base() > __rhs.base(); }
 
-      __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
+      _GLIBCXX_NODISCARD __attribute__((__always_inline__))
       friend
       _GLIBCXX_CONSTEXPR
       bool
@@ -1282,7 +1284,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       { return __lhs.base() > __rhs.base(); }
 
       template<typename _Iter>
-       __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
+       _GLIBCXX_NODISCARD __attribute__((__always_inline__))
        friend
        _GLIBCXX_CONSTEXPR
        bool
@@ -1291,7 +1293,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        _GLIBCXX_NOEXCEPT
        { return __lhs.base() <= __rhs.base(); }
 
-      __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
+      _GLIBCXX_NODISCARD __attribute__((__always_inline__))
       friend
       _GLIBCXX_CONSTEXPR
       bool
@@ -1300,7 +1302,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       { return __lhs.base() <= __rhs.base(); }
 
       template<typename _Iter>
-       __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
+       _GLIBCXX_NODISCARD __attribute__((__always_inline__))
        friend
        _GLIBCXX_CONSTEXPR
        bool
@@ -1309,7 +1311,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        _GLIBCXX_NOEXCEPT
        { return __lhs.base() >= __rhs.base(); }
 
-      __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
+      _GLIBCXX_NODISCARD __attribute__((__always_inline__))
       friend
       _GLIBCXX_CONSTEXPR
       bool
@@ -1341,7 +1343,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 #endif
        { return __lhs.base() - __rhs.base(); }
 
-      __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
+      _GLIBCXX_NODISCARD __attribute__((__always_inline__))
       friend
       _GLIBCXX_CONSTEXPR
       difference_type
@@ -1349,7 +1351,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        _GLIBCXX_NOEXCEPT
       { return __lhs.base() - __rhs.base(); }
 
-      __attribute__((__always_inline__)) _GLIBCXX_NODISCARD
+      _GLIBCXX_NODISCARD __attribute__((__always_inline__))
       friend
       _GLIBCXX_CONSTEXPR
       __normal_iterator
-- 
2.50.0

Reply via email to