https://gcc.gnu.org/g:3c89c41991d8e84d28d3aba22bb06b2712a29523
commit r15-3272-g3c89c41991d8e84d28d3aba22bb06b2712a29523 Author: Andrew Pinski <quic_apin...@quicinc.com> Date: Mon Aug 26 15:14:24 2024 -0700 expand: Add debug dump on the cost for `popcount==1` expand 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. Changes since v1: * v2: make the dump a single line 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. Diff: --- gcc/internal-fn.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gcc/internal-fn.cc b/gcc/internal-fn.cc index 89da13b38ce1..78997ef056ad 100644 --- a/gcc/internal-fn.cc +++ b/gcc/internal-fn.cc @@ -5351,6 +5351,11 @@ 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: popcount cost: %u; cmp cost: %u\n", + popcount_cost, cmp_cost); + if (popcount_cost <= cmp_cost) emit_insn (popcount_insns); else