You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is basically identical to #46030 ("Implement __builtin_zero_non_value_bits which was recently added to MSVC") except for GCC instead of MSVC.
C++20 includes P0528R3 and P1123R0, which together require std::atomic<T>::compare_exchange_strong and std::atomic_ref<T>::compare_exchange_strong to ignore any padding bits that exist in T. libstdc++ implements this using a builtin added to GCC, __builtin_clear_padding. Clang should implement this so that the feature works correctly when using libstdc++ with Clang.
When is alignment decided for specific fields? Isn't it in LLVM itself, later in the pipeline? If I recalled correctly, this might need to be an intrinsic - right?
EricWF
added
the
libc++
libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi.
label
May 23, 2024
This is basically identical to #46030 ("Implement
__builtin_zero_non_value_bits
which was recently added to MSVC") except for GCC instead of MSVC.C++20 includes P0528R3 and P1123R0, which together require
std::atomic<T>::compare_exchange_strong
andstd::atomic_ref<T>::compare_exchange_strong
to ignore any padding bits that exist inT
. libstdc++ implements this using a builtin added to GCC,__builtin_clear_padding
. Clang should implement this so that the feature works correctly when using libstdc++ with Clang.See also:
The text was updated successfully, but these errors were encountered: