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.

Reply via email to