https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100182
Bug ID: 100182 Summary: [8/9/10/11/12 Regression] Miscompilation of atomic_float/1.cc on i686 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: jakub at gcc dot gnu.org Target Milestone: --- Since r7-1112-gbeed3701c796842abbfb27d7484b35bd82818740 the following testcase distilled from 29_atomics/atomic_float/1.cc with -O2 -march=i686 -m32 aborts on i686-linux: struct __attribute__((aligned (8))) S { double _M_fp; }; union U { double d; unsigned long long int l; }; __attribute__((noipa)) void foo (void) { struct S a0, a1; union U u; double d0, d1; a0._M_fp = 0.0; a1._M_fp = 1.0; __atomic_store_8 (&a0._M_fp, __atomic_load_8 (&a1._M_fp, __ATOMIC_SEQ_CST), __ATOMIC_SEQ_CST); u.l = __atomic_load_8 (&a0._M_fp, __ATOMIC_SEQ_CST); d0 = u.d; u.l = __atomic_load_8 (&a1._M_fp, __ATOMIC_SEQ_CST); d1 = u.d; if (d0 != d1) __builtin_abort (); } int main () { foo (); return 0; }