[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAP-5=fWi-xCxuiszt538osE6KKWop7cYkN9Gjog65QgGQ-HhPQ@mail.gmail.com>
Date: Wed, 22 Oct 2025 09:39:05 -0700
From: Ian Rogers <irogers@...gle.com>
To: James Clark <james.clark@...aro.org>
Cc: linux-perf-users@...r.kernel.org, namhyung@...nel.org, acme@...nel.org,
Peter Zijlstra <peterz@...radead.org>, Ingo Molnar <mingo@...hat.com>,
Mark Rutland <mark.rutland@....com>,
Alexander Shishkin <alexander.shishkin@...ux.intel.com>, Jiri Olsa <jolsa@...nel.org>,
Adrian Hunter <adrian.hunter@...el.com>, Nathan Chancellor <nathan@...nel.org>,
Nick Desaulniers <nick.desaulniers+lkml@...il.com>, Bill Wendling <morbo@...gle.com>,
Justin Stitt <justinstitt@...gle.com>, Tianyou Li <tianyou.li@...el.com>,
Thomas Falcon <thomas.falcon@...el.com>, Zhiguo Zhou <zhiguo.zhou@...el.com>,
Wangyang Guo <wangyang.guo@...el.com>, Pan Deng <pan.deng@...el.com>,
linux-kernel@...r.kernel.org, llvm@...ts.linux.dev
Subject: Re: [PATCH] perf annotate: Fix Clang build by adding block in switch case
On Wed, Oct 22, 2025 at 4:03 AM James Clark <james.clark@...aro.org> wrote:
>
> Clang and GCC disagree with what constitutes a "declaration after
> statement". GCC allows declarations in switch cases without an extra
> block, as long as it's immediately after the label. Clang does not.
> Unfortunately this is the case even in the latest versions of both
> compilers. The only option that makes them behave in the same way is
> -Wpedantic, which can't be enabled in Perf because of the number of
> warnings it generates.
>
> Add a block to fix the Clang build, which is the only thing we can do.
>
> Fixes the build error:
>
> ui/browsers/annotate.c:999:4: error: expected expression
> struct annotation_line *al = NULL;
>
> ui/browsers/annotate.c:1008:4: error: use of undeclared identifier 'al'
> al = annotated_source__get_line(notes->src, offset);
>
> ui/browsers/annotate.c:1009:24: error: use of undeclared identifier 'al'
> browser->curr_hot = al ? &al->rb_node : NULL;
>
> ui/browsers/annotate.c:1009:30: error: use of undeclared identifier 'al'
> browser->curr_hot = al ? &al->rb_node : NULL;
>
> ui/browsers/annotate.c:1000:8: error: mixing declarations and code is incompatible with standards before C99 [-Werror,-Wdeclaration-after-statement]
> s64 offset = annotate_browser__curr_hot_offset(browser);
>
> Fixes: ad83f3b7155d ("perf c2c annotate: Start from the contention line")
> Signed-off-by: James Clark <james.clark@...aro.org>
Reviewed-by: Ian Rogers <irogers@...gle.com>
Thanks,
Ian
> ---
> tools/perf/ui/browsers/annotate.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c
> index 3a81912279ad..36aca8d6d003 100644
> --- a/tools/perf/ui/browsers/annotate.c
> +++ b/tools/perf/ui/browsers/annotate.c
> @@ -995,7 +995,7 @@ static int annotate_browser__run(struct annotate_browser *browser,
> case 'H':
> nd = browser->curr_hot;
> break;
> - case 's':
> + case 's': {
> struct annotation_line *al = NULL;
> s64 offset = annotate_browser__curr_hot_offset(browser);
>
> @@ -1012,6 +1012,7 @@ static int annotate_browser__run(struct annotate_browser *browser,
> annotate__scnprintf_title(hists, title, sizeof(title));
> annotate_browser__show(browser, title, help);
> continue;
> + }
> case 'o':
> annotate_opts.use_offset = !annotate_opts.use_offset;
> annotation__update_column_widths(notes);
> --
> 2.34.1
>
Powered by blists - more mailing lists