[libcxx-commits] [libcxx] [libc++] Implement P0528R3 `std::atomic` CAS for types with padding (PR #76180)

Michał Górny via libcxx-commits libcxx-commits at lists.llvm.org
Wed Aug 19 03:08:29 PDT 2026


mgorny wrote:

The added test crashes on 32-bit x86:

```
FAIL: llvm-libc++-shared.cfg.in :: libcxx/atomics/clear_padding.pass.cpp (2072 of 11569)
******************** TEST 'llvm-libc++-shared.cfg.in :: libcxx/atomics/clear_padding.pass.cpp' FAILED ********************
Exit Code: 250

Command Output (stdout):
--
# COMPILED WITH
/usr/lib/ccache/bin/i686-pc-linux-gnu-clang++-24 /var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/work/libcxx/test/libcxx/atomics/clea
r_padding.pass.cpp -pthread --target=i686-pc-linux-gnu -nostdinc++ -I /var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/work/runtimes_b
uild-abi_x86_32.x86/libcxx/test-suite-install/include/c++/v1 -I /var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/work/runtimes_build-a
bi_x86_32.x86/libcxx/test-suite-install/include/c++/v1 -I /var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/work/libcxx/test/support -s
td=c++26 -Wall -Wctad-maybe-unsupported -Wextra -Wshadow -Wundef -Wunused-template -Wno-unused-command-line-argument -Wno-attributes -W
no-pessimizing-move -Wno-noexcept-type -Wno-atomic-alignment -Wno-reserved-module-identifier -Wdeprecated-copy -Wdeprecated-copy-dtor -
Wshift-negative-value -Wno-user-defined-literals -Wno-tautological-compare -Wno-stringop-overread -Wsign-compare -Wunused-variable -Wun
used-parameter -Wunreachable-code -Wno-unused-local-typedef -Wno-local-type-template-args -Wno-c++11-extensions -Wno-unknown-pragmas -W
no-pass-failed -Wno-mismatched-new-delete -Wno-redundant-move -Wno-self-move -Wno-nullability-completeness -flax-vector-conversions=non
e -D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -Werror -D_LIBCPP_ENABLE_EXPERIMENTAL -Wuser-defined-warnings -Wno-deprecated-volatile -Wno-dyn
amic-class-memaccess -lc++experimental -nostdlib++ -L /var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/work/runtimes_build-abi_x86_32.
x86/libcxx/test-suite-install/lib -Wl,-rpath,/var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/work/runtimes_build-abi_x86_32.x86/libcx
x/test-suite-install/lib -lc++ -latomic -o /var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/work/runtimes_build-abi_x86_32.x86/libcxx/
test/libcxx/atomics/Output/clear_padding.pass.cpp.dir/t.tmp.exe
# executed command: /usr/lib/ccache/bin/i686-pc-linux-gnu-clang++-24 /var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/work/libcxx/test
/libcxx/atomics/clear_padding.pass.cpp -pthread --target=i686-pc-linux-gnu -nostdinc++ -I /var/tmp/portage/llvm-runtimes/libcxx-24.0.0.
9999/work/runtimes_build-abi_x86_32.x86/libcxx/test-suite-install/include/c++/v1 -I /var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/w
ork/runtimes_build-abi_x86_32.x86/libcxx/test-suite-install/include/c++/v1 -I /var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/work/li
bcxx/test/support -std=c++26 -Wall -Wctad-maybe-unsupported -Wextra -Wshadow -Wundef -Wunused-template -Wno-unused-command-line-argumen
t -Wno-attributes -Wno-pessimizing-move -Wno-noexcept-type -Wno-atomic-alignment -Wno-reserved-module-identifier -Wdeprecated-copy -Wde
precated-copy-dtor -Wshift-negative-value -Wno-user-defined-literals -Wno-tautological-compare -Wno-stringop-overread -Wsign-compare -W
unused-variable -Wunused-parameter -Wunreachable-code -Wno-unused-local-typedef -Wno-local-type-template-args -Wno-c++11-extensions -Wn
o-unknown-pragmas -Wno-pass-failed -Wno-mismatched-new-delete -Wno-redundant-move -Wno-self-move -Wno-nullability-completeness -flax-ve
ctor-conversions=none -D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -Werror -D_LIBCPP_ENABLE_EXPERIMENTAL -Wuser-defined-warnings -Wno-deprecat
ed-volatile -Wno-dynamic-class-memaccess -lc++experimental -nostdlib++ -L /var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/work/runtim
es_build-abi_x86_32.x86/libcxx/test-suite-install/lib -Wl,-rpath,/var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/work/runtimes_build-abi_x86_32.x86/libcxx/test-suite-install/lib -lc++ -latomic -o /var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/work/runtimes_build-abi_x86_32.x86/libcxx/test/libcxx/atomics/Output/clear_padding.pass.cpp.dir/t.tmp.exe
# EXECUTED AS
/usr/bin/python3.14 /var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/work/libcxx/utils/run.py --execdir /var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/work/runtimes_build-abi_x86_32.x86/libcxx/test/libcxx/atomics/Output/clear_padding.pass.cpp.dir --  /var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/work/runtimes_build-abi_x86_32.x86/libcxx/test/libcxx/atomics/Output/clear_padding.pass.cpp.dir/t.tmp.exe
# executed command: /usr/bin/python3.14 /var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/work/libcxx/utils/run.py --execdir /var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/work/runtimes_build-abi_x86_32.x86/libcxx/test/libcxx/atomics/Output/clear_padding.pass.cpp.dir -- /var/tmp/portage/llvm-runtimes/libcxx-24.0.0.9999/work/runtimes_build-abi_x86_32.x86/libcxx/test/libcxx/atomics/Output/clear_padding.pass.cpp.dir/t.tmp.exe
# .---command stderr------------
# | *** stack smashing detected ***: terminated
# `-----------------------------
# error: command failed with exit status: 250

--

********************
```

May be a bug in clang, though.

https://github.com/llvm/llvm-project/pull/76180


More information about the libcxx-commits mailing list