https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97981
--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> --- The revision causes the following diff in GENERIC: @@ -10,8 +10,8 @@ static atomic volatile double a; static atomic volatile double b = 0.0; # DEBUG BEGIN STMT; - if (TARGET_EXPR <D.1886, TARGET_EXPR <D.1885, (void) (D.1885 = VIEW_CONVERT_EXPR<double>(__atomic_load_8 ((const volatile void *) &b, 5)))>>; - __atomic_store_8 ((volatile void *) &a, VIEW_CONVERT_EXPR<long long unsigned int>(D.1886), 5);, D.1886 != 0.0;) + if (TARGET_EXPR <D.1885, (double) b>; + __atomic_store_8 ((volatile void *) &a, VIEW_CONVERT_EXPR<long long unsigned int>(D.1885), 5);, D.1885 != 0.0;) { # DEBUG BEGIN STMT; __builtin_abort ();