aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2024-06-26 12:40:51 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2024-06-28 20:19:02 +0100
commitac8c61b62e71ffdcaebfd4cfc03f58fe542855dd (patch)
treea588d6c333a586362dc54b216c540dfb1246b909 /gcc
parent5612541834c063dd4126fb059e59c5dc8d5f2f8e (diff)
downloadgcc-ac8c61b62e71ffdcaebfd4cfc03f58fe542855dd.zip
gcc-ac8c61b62e71ffdcaebfd4cfc03f58fe542855dd.tar.gz
gcc-ac8c61b62e71ffdcaebfd4cfc03f58fe542855dd.tar.bz2
libstdc++: Simplify <ext/aligned_buffer.h> class templates
As noted in a comment, the __gnu_cxx::__aligned_membuf class template can be simplified, because alignof(T) and alignas(T) use the correct alignment for a data member. That's true since GCC 8 and Clang 8. The EDG front end (as used by Intel icc, aka "Intel C++ Compiler Classic") does not implement the PR c++/69560 change, so keep using the old implementation when __EDG__ is defined, to avoid an ABI change for icc. For __gnu_cxx::__aligned_buffer<T> all supported compilers agree on the value of __alignof__(T), but we can still simplify it by removing the dependency on std::aligned_storage<sizeof(T), __alignof__(T)>. Add a test that checks that the aligned buffer types have the expected alignment, so that we can tell if changes like this affect their ABI properties. libstdc++-v3/ChangeLog: * include/ext/aligned_buffer.h (__aligned_membuf): Use alignas(T) directly instead of defining a struct and using 9its alignment. (__aligned_buffer): Remove use of std::aligned_storage. * testsuite/abi/aligned_buffers.cc: New test.
Diffstat (limited to 'gcc')
0 files changed, 0 insertions, 0 deletions