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.

Reply via email to