https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93341
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- /* We should be able to reverse all conditions. */ gcc_assert (inv_cond_code != UNKNOWN); Obvious this code is broken because The quiet UN* was converted into the an unordered-signalling comparison which was bad. Quote from the recent change: And it would do the same in reverse: convert a quiet UN* into an unordered-signalling comparison. So obvious this code in aarch64_do_track_speculation was broken when it was added, just the aarch64 back-end was broken to do the wrong thing in the first place so we never able to hit the assert before hand.