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