https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97981
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |marxin at gcc dot gnu.org, | |muecker at gwdg dot de Known to fail| |11.0 Known to work| |10.2.0 Keywords|needs-bisection | See Also| |https://gcc.gnu.org/bugzill | |a/show_bug.cgi?id=98029 --- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> --- Confirmed, started with r11-5188-g32934a4f45a72144. There's reduced test-case: $ cat atomic.i int main(void) { static volatile _Atomic(double) a, b = (double)((0)); if ((a = b) != ((double)((0)))) __builtin_abort(); return 0; } $ gcc -g atomic.i -m32 -c -O2 && gcc-10 -m32 -latomic atomic.o && valgrind ./a.out ==2400== Memcheck, a memory error detector ==2400== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==2400== Using Valgrind-3.16.1 and LibVEX; rerun with -h for copyright info ==2400== Command: ./a.out ==2400== ==2400== Conditional jump or move depends on uninitialised value(s) ==2400== at 0x8049081: main (atomic.i:3) ==2400== ==2400== Conditional jump or move depends on uninitialised value(s) ==2400== at 0x8049087: main (atomic.i:3) ==2400== ==2400== ==2400== Process terminating with default action of signal 6 (SIGABRT): dumping core ==2400== at 0x40C17D6: raise (in /lib/libc-2.32.so) ==2400== by 0x40A9313: abort (in /lib/libc-2.32.so) ==2400== by 0x8049054: main.cold (atomic.i:4) ==2400== by 0x40AAF75: (below main) (in /lib/libc-2.32.so) ==2400== ==2400== HEAP SUMMARY: ==2400== in use at exit: 0 bytes in 0 blocks ==2400== total heap usage: 0 allocs, 0 frees, 0 bytes allocated ==2400== ==2400== All heap blocks were freed -- no leaks are possible ==2400== ==2400== Use --track-origins=yes to see where uninitialised values come from ==2400== For lists of detected and suppressed errors, rerun with: -s ==2400== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) Aborted (core dumped)