Although the compiler supports the [[no_unique_address]] attribute, it's
not a reserved name prior to C++20, so we can't use it in std::tuple.
Use [[__no_unique_address__]] instead.

libstdc++-v3/ChangeLog:

        * include/std/tuple (_Head_base<Idx, Head, true>): Use reserved
        form of __no_unique_address__ attribute because
        no_unique_address is not reserved prior to C++20.

Tested powerpc64le-linux. Committed to trunk.

commit fc77484c4a4feb308c64371233cb65b280333953
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Mon Oct 19 17:57:14 2020

    libstdc++: Use reserved name for C++20 attribute
    
    Although the compiler supports the [[no_unique_address]] attribute, it's
    not a reserved name prior to C++20, so we can't use it in std::tuple.
    Use [[__no_unique_address__]] instead.
    
    libstdc++-v3/ChangeLog:
    
            * include/std/tuple (_Head_base<Idx, Head, true>): Use reserved
            form of __no_unique_address__ attribute because
            no_unique_address is not reserved prior to C++20.

diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple
index 11ad1991108..adfd6213a14 100644
--- a/libstdc++-v3/include/std/tuple
+++ b/libstdc++-v3/include/std/tuple
@@ -122,7 +122,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       static constexpr const _Head&
       _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; }
 
-      [[no_unique_address]] _Head _M_head_impl;
+      [[__no_unique_address__]] _Head _M_head_impl;
     };
 #else
   template<size_t _Idx, typename _Head>

Reply via email to