diff mbox series

[committed] libstdc++: Use reserved name for attribute [PR101055]

Message ID YMc1Rk2lm08unXfM@redhat.com
State New
Headers show
Series [committed] libstdc++: Use reserved name for attribute [PR101055] | expand

Commit Message

Jonathan Wakely June 14, 2021, 10:53 a.m. UTC
The no_unique_address attribute is not a reserved name until C++20, so
to use it in C++11/14/17 modes we should use the __no_unique_address_
form. We already use that form when using the attribute, but not in the
__has_cpp_attribute check.

libstdc++-v3/ChangeLog:

	PR libstdc++/101055
	* include/std/tuple: Use reserved form of attribute name.
	* testsuite/17_intro/headers/c++2011/all_attributes.cc: Add
	check for no_unique_address.
	* testsuite/17_intro/headers/c++2014/all_attributes.cc:
	Likewise.
	* testsuite/17_intro/headers/c++2017/all_attributes.cc:
	Likewise.

Tested powerpc64le-linux. Committed to trunk.

Backport to gcc-11 needed too.
commit 917efba2dd4ff34336d0d3aa55285ae22503e4aa
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Mon Jun 14 10:58:15 2021

    libstdc++: Use reserved name for attribute [PR101055]
    
    The no_unique_address attribute is not a reserved name until C++20, so
    to use it in C++11/14/17 modes we should use the __no_unique_address_
    form. We already use that form when using the attribute, but not in the
    __has_cpp_attribute check.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/101055
            * include/std/tuple: Use reserved form of attribute name.
            * testsuite/17_intro/headers/c++2011/all_attributes.cc: Add
            check for no_unique_address.
            * testsuite/17_intro/headers/c++2014/all_attributes.cc:
            Likewise.
            * testsuite/17_intro/headers/c++2017/all_attributes.cc:
            Likewise.

Comments

Jonathan Wakely June 14, 2021, 1:06 p.m. UTC | #1
On 14/06/21 11:54 +0100, Jonathan Wakely wrote:
>The no_unique_address attribute is not a reserved name until C++20, so
>to use it in C++11/14/17 modes we should use the __no_unique_address_
>form. We already use that form when using the attribute, but not in the
>__has_cpp_attribute check.
>
>libstdc++-v3/ChangeLog:
>
>	PR libstdc++/101055
>	* include/std/tuple: Use reserved form of attribute name.
>	* testsuite/17_intro/headers/c++2011/all_attributes.cc: Add
>	check for no_unique_address.
>	* testsuite/17_intro/headers/c++2014/all_attributes.cc:
>	Likewise.
>	* testsuite/17_intro/headers/c++2017/all_attributes.cc:
>	Likewise.

And this ensures the modified C++17 test doesn't fail when using a
newer -std option.

Tested powerpc64le-linux. Committed to trunk.
diff mbox series

Patch

diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple
index 3b771c50b25..2d562f8da77 100644
--- a/libstdc++-v3/include/std/tuple
+++ b/libstdc++-v3/include/std/tuple
@@ -73,7 +73,7 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	   bool = __empty_not_final<_Head>::value>
     struct _Head_base;
 
-#if __has_cpp_attribute(no_unique_address)
+#if __has_cpp_attribute(__no_unique_address__)
   template<size_t _Idx, typename _Head>
     struct _Head_base<_Idx, _Head, true>
     {
diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++2011/all_attributes.cc b/libstdc++-v3/testsuite/17_intro/headers/c++2011/all_attributes.cc
index c5c94ad7702..c38fc7d4d84 100644
--- a/libstdc++-v3/testsuite/17_intro/headers/c++2011/all_attributes.cc
+++ b/libstdc++-v3/testsuite/17_intro/headers/c++2011/all_attributes.cc
@@ -28,6 +28,7 @@ 
 # define deprecated 1
 # define visibility 1
 #endif
+#define no_unique_address 1
 #define packed 1
 #define pure 1
 // glibc's sysdeps/unix/sysv/linux/arm/sys/ucontext.h uses this on ARM.
diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc b/libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc
index c8f036219ff..65d273db19c 100644
--- a/libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc
+++ b/libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc
@@ -28,6 +28,7 @@ 
 # define deprecated 1
 # define visibility 1
 #endif
+#define no_unique_address 1
 #define packed 1
 #define pure 1
 // glibc's sysdeps/unix/sysv/linux/arm/sys/ucontext.h uses this on ARM.
diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++2017/all_attributes.cc b/libstdc++-v3/testsuite/17_intro/headers/c++2017/all_attributes.cc
index c4e38d6423a..811b3fe3613 100644
--- a/libstdc++-v3/testsuite/17_intro/headers/c++2017/all_attributes.cc
+++ b/libstdc++-v3/testsuite/17_intro/headers/c++2017/all_attributes.cc
@@ -26,6 +26,7 @@ 
 # define cold 1
 # define visibility 1
 #endif
+#define no_unique_address 1
 #define packed 1
 #define pure 1
 // glibc's sysdeps/unix/sysv/linux/arm/sys/ucontext.h uses this on ARM.