Message ID | YMc1Rk2lm08unXfM@redhat.com |
---|---|
State | New |
Headers | show |
Series | [committed] libstdc++: Use reserved name for attribute [PR101055] | expand |
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 --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.