[PATCH] RISC-V: fix build after "Add support for arbitrary immediate encoding formats"
Jan Beulich
jbeulich@suse.com
Fri Sep 30 09:41:29 GMT 2022
Pre- and post-increment/decrement are side effects, the behavior of
which is undefined when combined with passing an address of the accessed
variable in the same function invocation. There's no need for the
increments here - simply adding 1 achieves the intended effect without
triggering compiler diagnostics (which are fatal with -Werror).
---
Committing as obvious.
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -1287,10 +1287,10 @@ validate_riscv_insn (const struct riscv_
case 'u': /* 'XuN@S' ... N-bit unsigned immediate at bit S. */
goto use_imm;
use_imm:
- n = strtol (++oparg, (char **)&oparg, 10);
+ n = strtol (oparg + 1, (char **)&oparg, 10);
if (*oparg != '@')
goto unknown_validate_operand;
- s = strtol (++oparg, (char **)&oparg, 10);
+ s = strtol (oparg + 1, (char **)&oparg, 10);
oparg--;
USE_IMM (n, s);
@@ -3327,10 +3327,10 @@ riscv_ip (char *str, struct riscv_cl_ins
sign = false;
goto parse_imm;
parse_imm:
- n = strtol (++oparg, (char **)&oparg, 10);
+ n = strtol (oparg + 1, (char **)&oparg, 10);
if (*oparg != '@')
goto unknown_riscv_ip_operand;
- s = strtol (++oparg, (char **)&oparg, 10);
+ s = strtol (oparg + 1, (char **)&oparg, 10);
oparg--;
my_getExpression (imm_expr, asarg);
--- a/opcodes/riscv-dis.c
+++ b/opcodes/riscv-dis.c
@@ -586,10 +586,10 @@ print_insn_args (const char *oparg, insn
sign = false;
goto print_imm;
print_imm:
- n = strtol (++oparg, (char **)&oparg, 10);
+ n = strtol (oparg + 1, (char **)&oparg, 10);
if (*oparg != '@')
goto undefined_modifier;
- s = strtol (++oparg, (char **)&oparg, 10);
+ s = strtol (oparg + 1, (char **)&oparg, 10);
oparg--;
if (!sign)
More information about the Binutils
mailing list