https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79389
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> --- For -O2 -m64 the reason why noce_try_addcc doesn't trigger is that we have if_info->cond of (unlt (reg:DF 100) (reg:DF 97)) and reverse_comparison_code on it returns UNKNOWN. Though, that UNLT comes from: noce_get_condition which calls canonicalize_condition on the original (ge (reg:CCFP 17 flags) (const_int 0 [0])) condition with reverse set to true. Now, if I call canonicalize_condition on the original ge with reversed set to false, I get: (ge (reg:DF 100) (reg:DF 97)) The FPU compare reversions are just way too many to be understandable, I have no idea why UNLT can't be reversed, while GE can be reversed to UNLT.