Re: [PATCH] perf report: Fix no branch type statistics report issue

From: Arnaldo Carvalho de Melo
Date: Fri Mar 13 2020 - 15:24:32 EST


Em Fri, Mar 13, 2020 at 09:46:07PM +0800, Jin Yao escreveu:
> Previously we could get the report of branch type statistics.
>
> For example,
>
> perf record -j any,save_type ...
> perf report --stdio
>
> #
> # Branch Statistics:
> #
> COND_FWD: 40.6%
> COND_BWD: 4.1%
> CROSS_4K: 24.7%
> CROSS_2M: 12.3%
> COND: 44.7%
> UNCOND: 0.0%
> IND: 6.1%
> CALL: 24.5%
> RET: 24.7%
>
> But now for the recent perf, it can't report the branch type statistics.
>
> It's a regression issue caused by commit 40c39e304641
> ("perf report: Fix a no annotate browser displayed issue"),
> which only counts the branch type statistics for browser mode.
>
> This patch moves the branch_type_count() outside of ui__has_annotation()
> checking, then branch type statistics can work for stdio mode.
>
> Fixes: 40c39e304641 ("perf report: Fix a no annotate browser displayed issue")

Thanks, tested before/after, matches description, applied.

- Arnaldo

> Signed-off-by: Jin Yao <yao.jin@xxxxxxxxxxxxxxx>
> ---
> tools/perf/builtin-report.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
> index d7c905f7520f..5f4045df76f4 100644
> --- a/tools/perf/builtin-report.c
> +++ b/tools/perf/builtin-report.c
> @@ -186,24 +186,23 @@ static int hist_iter__branch_callback(struct hist_entry_iter *iter,
> {
> struct hist_entry *he = iter->he;
> struct report *rep = arg;
> - struct branch_info *bi;
> + struct branch_info *bi = he->branch_info;
> struct perf_sample *sample = iter->sample;
> struct evsel *evsel = iter->evsel;
> int err;
>
> + branch_type_count(&rep->brtype_stat, &bi->flags,
> + bi->from.addr, bi->to.addr);
> +
> if (!ui__has_annotation() && !rep->symbol_ipc)
> return 0;
>
> - bi = he->branch_info;
> err = addr_map_symbol__inc_samples(&bi->from, sample, evsel);
> if (err)
> goto out;
>
> err = addr_map_symbol__inc_samples(&bi->to, sample, evsel);
>
> - branch_type_count(&rep->brtype_stat, &bi->flags,
> - bi->from.addr, bi->to.addr);
> -
> out:
> return err;
> }
> --
> 2.17.1
>

--

- Arnaldo