clang 22 complains about a label followed by a declaration in
src/stacktrace.c because it doesn't default to C23.

src/stacktrace.c:913:3: error: label followed by a declaration is a
C23 extension [-Werror,-Wc23-extensions]
  913 |   bool is_abi32 = (regs->abi == PERF_SAMPLE_REGS_ABI_32);
      |   ^

This isn't a problem with gcc because it is a GNU extension.

        * src/stacktrace.c (sysprof_find_dwfl): But declarations after
        reuse label into block.

Signed-off-by: Mark Wielaard <[email protected]>
---
 src/stacktrace.c | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/src/stacktrace.c b/src/stacktrace.c
index 83fb3d96455e..a7949ae14c83 100644
--- a/src/stacktrace.c
+++ b/src/stacktrace.c
@@ -910,15 +910,18 @@ sysprof_find_dwfl (struct sysprof_unwind_info *sui,
     }
 
  reuse:
-  bool is_abi32 = (regs->abi == PERF_SAMPLE_REGS_ABI_32);
-  sui->last_sp = regs->regs[sp_reg_index(default_ebl, is_abi32)];
-  sui->last_base = sui->last_sp;
-
-  if (show_frames) {
-    fprintf(stderr, "sysprof_find_dwfl pid %lld%s: size=%ld%s pc=%lx 
sp=%lx+(%lx)\n",
-           (long long) pid, cached ? " (cached)" : "",
-           ev->size, is_abi32 ? " (32-bit)" : "",
-           regs->regs[8], sui->last_base, (long)0);
+  {
+    bool is_abi32 = (regs->abi == PERF_SAMPLE_REGS_ABI_32);
+    sui->last_sp = regs->regs[sp_reg_index(default_ebl, is_abi32)];
+    sui->last_base = sui->last_sp;
+
+    if (show_frames) {
+      fprintf(stderr,
+             "sysprof_find_dwfl pid %lld%s: size=%ld%s pc=%lx sp=%lx+(%lx)\n",
+             (long long) pid, cached ? " (cached)" : "",
+             ev->size, is_abi32 ? " (32-bit)" : "",
+             regs->regs[8], sui->last_base, (long)0);
+    }
   }
 
   if (!cached)
-- 
2.54.0

Reply via email to