diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2024-04-13 13:07:06 -0700 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2024-05-15 09:58:44 +0200 |
commit | d08ad0e0f08d3b6561be83beb992b9835aa47895 (patch) | |
tree | 0a3d686e7cc5b52cf5080076316417490348b8ba | |
parent | 0dcd6640e49c3cbd534e5a1d39338bcd6e691e18 (diff) | |
download | qemu-d08ad0e0f08d3b6561be83beb992b9835aa47895.zip qemu-d08ad0e0f08d3b6561be83beb992b9835aa47895.tar.gz qemu-d08ad0e0f08d3b6561be83beb992b9835aa47895.tar.bz2 |
target/hppa: Skip nullified insns in unconditional dbranch path
Reviewed-by: Helge Deller <deller@gmx.de>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
-rw-r--r-- | target/hppa/translate.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/target/hppa/translate.c b/target/hppa/translate.c index 9189e03..6c5efb0 100644 --- a/target/hppa/translate.c +++ b/target/hppa/translate.c @@ -1806,11 +1806,17 @@ static bool do_dbranch(DisasContext *ctx, int64_t disp, if (ctx->null_cond.c == TCG_COND_NEVER && ctx->null_lab == NULL) { install_link(ctx, link, false); - ctx->iaoq_n = dest; - ctx->iaoq_n_var = NULL; if (is_n) { + if (use_nullify_skip(ctx)) { + nullify_set(ctx, 0); + gen_goto_tb(ctx, 0, dest, dest + 4); + ctx->base.is_jmp = DISAS_NORETURN; + return true; + } ctx->null_cond.c = TCG_COND_ALWAYS; } + ctx->iaoq_n = dest; + ctx->iaoq_n_var = NULL; } else { nullify_over(ctx); |