disas/riscv: Allow decode_inst_lift_pseudo to loop
Allow pseudo expansion to proceed in multiple steps. Assert that we don't have simple loops. Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-ID: <20260812223142.349142-27-richard.henderson@linaro.org> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Richard Henderson committed
Aug 12, 2026 at 15:31 UTC
6b1230862c221986c1548c423db4b48967de09ea
1 file changed
+3
-3
disas/riscv.c
+3
-3
@@ -5259,9 +5259,9 @@ static const rv_opcode_data *decode_inst_lift_pseudo(rv_decode *dec,
5259
if (comp_data) {
5260
while (comp_data->constraints) {
5261
if (check_constraints(dec, comp_data->constraints)) {
5262
- dec->op = comp_data->op;
5263
- op = &dec->opcode_data[dec->op];
5264
- break;
5262
+ const rv_opcode_data *new_op = &dec->opcode_data[comp_data->op];
5263
+ assert(new_op != op);
5264
+ return decode_inst_lift_pseudo(dec, new_op);
5265
}
5266
comp_data++;
5267
}