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

commit r15-3440-gdbd0eb39c690f80e7a9bb7697aaa3f85ff4dbadd
Author: Andrew Pinski <quic_apin...@quicinc.com>
Date:   Tue Sep 3 18:50:37 2024 -0700

    expand: Add dump for costing of positive divides
    
    While trying to understand PR 115910 I found it was useful to print out
    the two costs of doing a signed and unsigned division just like was added in
    r15-3272-g3c89c41991d8e8 for popcount==1.
    
    Bootstrapped and tested on x86_64-linux-gnu.
    
    gcc/ChangeLog:
    
            * expr.cc (expand_expr_divmod): Add dump of the two costs for
            positive division.
    
    Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>

Diff:
---
 gcc/expr.cc | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/gcc/expr.cc b/gcc/expr.cc
index 320be8b17a1..7a471f20e79 100644
--- a/gcc/expr.cc
+++ b/gcc/expr.cc
@@ -9648,6 +9648,7 @@ expand_expr_divmod (tree_code code, machine_mode mode, 
tree treeop0,
       end_sequence ();
       unsigned uns_cost = seq_cost (uns_insns, speed_p);
       unsigned sgn_cost = seq_cost (sgn_insns, speed_p);
+      bool was_tie = false;
 
       /* If costs are the same then use as tie breaker the other other
         factor.  */
@@ -9655,8 +9656,14 @@ expand_expr_divmod (tree_code code, machine_mode mode, 
tree treeop0,
        {
          uns_cost = seq_cost (uns_insns, !speed_p);
          sgn_cost = seq_cost (sgn_insns, !speed_p);
+         was_tie = true;
        }
 
+      if (dump_file && (dump_flags & TDF_DETAILS))
+         fprintf(dump_file, "positive division:%s unsigned cost: %u; "
+                 "signed cost: %u\n", was_tie ? "(needed tie breaker)":"",
+                 uns_cost, sgn_cost);
+
       if (uns_cost < sgn_cost || (uns_cost == sgn_cost && unsignedp))
        {
          emit_insn (uns_insns);

Reply via email to