While working on PR 114224, I found it would be useful to dump the
different costs of the expansion to make easier to understand why one
was chosen over the other.

Bootstrapped and tested on x86_64-linux-gnu.
Build and tested for aarch64-linux-gnu.

gcc/ChangeLog:

        * internal-fn.cc (expand_POPCOUNT): Dump the costs for
        the two choices.
---
 gcc/internal-fn.cc | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/gcc/internal-fn.cc b/gcc/internal-fn.cc
index 89da13b38ce..91210976a0a 100644
--- a/gcc/internal-fn.cc
+++ b/gcc/internal-fn.cc
@@ -5351,6 +5351,14 @@ expand_POPCOUNT (internal_fn fn, gcall *stmt)
   unsigned popcount_cost = (seq_cost (popcount_insns, speed_p)
                            + seq_cost (popcount_cmp_insns, speed_p));
   unsigned cmp_cost = seq_cost (cmp_insns, speed_p);
+
+  if (dump_file && (dump_flags & TDF_DETAILS))
+    {
+      fprintf(dump_file, "popcount == 1, cost\n");
+      fprintf(dump_file, "popcount: %u\n", popcount_cost);
+      fprintf(dump_file, "cmp: %u\n\n", cmp_cost);
+    }
+
   if (popcount_cost <= cmp_cost)
     emit_insn (popcount_insns);
   else
-- 
2.43.0

Reply via email to