https://gcc.gnu.org/g:ce55e48fc4ae41064b01e3241b17e6434fbaf07a

commit r16-6375-gce55e48fc4ae41064b01e3241b17e6434fbaf07a
Author: Andrew Pinski <[email protected]>
Date:   Tue Dec 23 13:30:00 2025 -0800

    ifcvt: Move noce_try_cond_zero_arith last
    
    I noticed that on x86_64 and aarch64, noce_try_cond_zero_arith
    would produce worse code than noce_try_cmove_arith.
    So we should do noce_try_cond_zero_arith last instead
    of before noce_try_cmove_arith.
    
    Pushed as obvious after bootstrap/test on x86_64-linux-gnu.
    Also checked to make sure riscv testcases still work.
    
    gcc/ChangeLog:
    
            * ifcvt.cc (noce_process_if_block): Move noce_try_cond_zero_arith
            last.
    
    Signed-off-by: Andrew Pinski <[email protected]>

Diff:
---
 gcc/ifcvt.cc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gcc/ifcvt.cc b/gcc/ifcvt.cc
index 75d959f652c5..97033aad482c 100644
--- a/gcc/ifcvt.cc
+++ b/gcc/ifcvt.cc
@@ -4404,14 +4404,14 @@ noce_process_if_block (struct noce_if_info *if_info)
        goto success;
       if (noce_try_store_flag_mask (if_info))
        goto success;
-      if (HAVE_conditional_move
-          && noce_try_cond_zero_arith (if_info))
-       goto success;
       if (HAVE_conditional_move
          && noce_try_cmove_arith (if_info))
        goto success;
       if (noce_try_sign_mask (if_info))
        goto success;
+      if (HAVE_conditional_move
+          && noce_try_cond_zero_arith (if_info))
+       goto success;
     }
 
   if (!else_bb && set_b)

Reply via email to