]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
RISC-V: Fix build with clang and gcc prior to gcc11
authorMark Zhuang <mark.zhuang@spacemit.com>
Tue, 23 Jun 2026 13:35:08 +0000 (21:35 +0800)
committerAlan Modra <amodra@gmail.com>
Mon, 29 Jun 2026 03:38:39 +0000 (13:08 +0930)
A label followed by a declaration is a C23 extension.
Add braces to fix it.

gas/config/tc-riscv.c
opcodes/riscv-dis.c

index 5ffa2ef1f1d4d14666ddc5ebc52825a440b2ba1a..28875e77ff0b339ea984bf590c3b2a80fe9a93c0 100644 (file)
@@ -1791,8 +1791,6 @@ validate_riscv_insn (const struct riscv_opcode *opc, int length)
                }
                break;
            case 'p': /* Vendor-specific (SpacemiT) operands.  */
-             size_t n;
-             size_t s;
              switch (*++oparg)
                {
                case 'V':
@@ -1815,12 +1813,14 @@ validate_riscv_insn (const struct riscv_opcode *opc, int length)
                  break;
                case 'u': /* Integer immediate, 'XpuN@S' ...
                             N-bit unsigned immediate at bit S.  */
-                 n = strtol (oparg + 1, (char **)&oparg, 10);
-                 if (*oparg != '@')
-                   goto unknown_validate_operand;
-                 s = strtol (oparg + 1, (char **)&oparg, 10);
-                 oparg--;
-                 USE_IMM (n, s);
+                 {
+                   size_t n = strtol (oparg + 1, (char **)&oparg, 10);
+                   if (*oparg != '@')
+                     goto unknown_validate_operand;
+                   size_t s = strtol (oparg + 1, (char **)&oparg, 10);
+                   oparg--;
+                   USE_IMM (n, s);
+                 }
                  break;
                case 'n':
                case 'b':
@@ -4309,8 +4309,6 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
                  break;
 
                case 'p': /* Vendor-specific (SpacemiT) operands.  */
-                 size_t n;
-                 size_t s;
                  switch (*++oparg)
                    {
                    case 'V':
@@ -4358,19 +4356,21 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
                      break;
                    case 'u': /* Integer immediate, 'XpuN@S' ...
                                 N-bit unsigned immediate at bit S.  */
-                     n = strtol (oparg + 1, (char **)&oparg, 10);
-                     if (*oparg != '@')
-                       goto unknown_riscv_ip_operand;
-                     s = strtol (oparg + 1, (char **)&oparg, 10);
-                     oparg--;
-                     my_getExpression (imm_expr, asarg, force_reloc);
-                     check_absolute_expr (ip, imm_expr, false);
-                     if (!VALIDATE_U_IMM (imm_expr->X_add_number, n))
-                       as_bad (_("improper immediate value (%"PRIu64")"),
-                               imm_expr->X_add_number);
-                     INSERT_IMM (n, s, *ip, imm_expr->X_add_number);
-                     imm_expr->X_op = O_absent;
-                     asarg = expr_parse_end;
+                     {
+                       size_t n = strtol (oparg + 1, (char **)&oparg, 10);
+                       if (*oparg != '@')
+                         goto unknown_riscv_ip_operand;
+                       size_t s = strtol (oparg + 1, (char **)&oparg, 10);
+                       oparg--;
+                       my_getExpression (imm_expr, asarg, force_reloc);
+                       check_absolute_expr (ip, imm_expr, false);
+                       if (!VALIDATE_U_IMM (imm_expr->X_add_number, n))
+                         as_bad (_("improper immediate value (%"PRIu64")"),
+                                 imm_expr->X_add_number);
+                       INSERT_IMM (n, s, *ip, imm_expr->X_add_number);
+                       imm_expr->X_op = O_absent;
+                       asarg = expr_parse_end;
+                     }
                      continue;
                    case 'n': /* Xpn: stride (0-1), paired with Xpx.  */
                      my_getExpression (imm_expr, asarg, force_reloc);
index ca0d9bfd121358dcd703f4b18acd79a4c4788e4e..edb9ce047782ef1d0b60b46210ddb55c96823ecd 100644 (file)
@@ -924,14 +924,18 @@ print_insn_args (const char *oparg, insn_t l, bfd_vma pc, disassemble_info *info
                  switch (*++oparg)
                    {
                    case 'd':
-                     unsigned vd = EXTRACT_OPERAND (SPACEMIT_IME_VD, l) * 2;
-                     print (info->stream, dis_style_register, "%s",
-                            riscv_vecr_names_numeric[vd]);
+                     {
+                       unsigned vd = EXTRACT_OPERAND (SPACEMIT_IME_VD, l) * 2;
+                       print (info->stream, dis_style_register, "%s",
+                              riscv_vecr_names_numeric[vd]);
+                     }
                      break;
                    case 's':
-                     unsigned vs = EXTRACT_OPERAND (SPACEMIT_IME_VS1, l) * 2;
-                     print (info->stream, dis_style_register, "%s",
-                            riscv_vecr_names_numeric[vs]);
+                     {
+                       unsigned vs = EXTRACT_OPERAND (SPACEMIT_IME_VS1, l) * 2;
+                       print (info->stream, dis_style_register, "%s",
+                              riscv_vecr_names_numeric[vs]);
+                     }
                      break;
                    case 'm':
                      {