https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122267
Bug ID: 122267
Summary: 29_atomics/atomic_ref/float.cc FAIL on i686-linux
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: jakub at gcc dot gnu.org
Target Milestone: ---
I'm seeing
+FAIL: 29_atomics/atomic_ref/float.cc -std=gnu++20 execution test
+FAIL: 29_atomics/atomic_ref/float.cc -std=gnu++26 execution test
on i686-linux recently (worked 20251008, fails 20251011).
Dunno if it is due to r16-4373 or r16-4349 or r16-4315 or what.
The failure is
libstdc++-v3/testsuite/29_atomics/atomic_ref/float.cc:124: void test02():
Assertion 'ok' failed.
This is on
double value;
if constexpr (std::atomic_ref<double>::is_always_lock_free)
{
const auto mo = std::memory_order_relaxed;
std::atomic_ref<double> a(value);
bool ok = a.is_lock_free();
if constexpr (std::atomic_ref<double>::is_always_lock_free)
VERIFY( ok );
Bet this is because double is sometimes only 4 byte aligned on i686-linux, not
always 8 byte aligned (e.g. especially inside of structures).
In that case, it is a question why is_always_lock_free is true though.