[PATCH v2 17/23] target/riscv: Remove dead code after exception

Richard Henderson posted 23 patches 4 years, 4 months ago
Maintainers: Jiaxun Yang <jiaxun.yang@flygoat.com>, Aurelien Jarno <aurelien@aurel32.net>, Bin Meng <bin.meng@windriver.com>, Paolo Bonzini <pbonzini@redhat.com>, Bastian Koppelmann <kbastian@mail.uni-paderborn.de>, Greg Kurz <groug@kaod.org>, David Gibson <david@gibson.dropbear.id.au>, "Philippe Mathieu-Daudé" <f4bug@amsat.org>, David Hildenbrand <david@redhat.com>, Taylor Simpson <tsimpson@quicinc.com>, Laurent Vivier <laurent@vivier.eu>, Palmer Dabbelt <palmer@dabbelt.com>, Richard Henderson <richard.henderson@linaro.org>, Max Filippov <jcmvbkbc@gmail.com>, Thomas Huth <thuth@redhat.com>, Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, Peter Maydell <peter.maydell@linaro.org>, Stafford Horne <shorne@gmail.com>, Yoshinori Sato <ysato@users.sourceforge.jp>, Eduardo Habkost <ehabkost@redhat.com>, Alistair Francis <alistair.francis@wdc.com>, Cornelia Huck <cohuck@redhat.com>
[PATCH v2 17/23] target/riscv: Remove dead code after exception
Posted by Richard Henderson 4 years, 4 months ago
We have already set DISAS_NORETURN in generate_exception,
which makes the exit_tb unreachable.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/riscv/insn_trans/trans_privileged.c.inc | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/target/riscv/insn_trans/trans_privileged.c.inc b/target/riscv/insn_trans/trans_privileged.c.inc
index 32312be202..a7afcb15ce 100644
--- a/target/riscv/insn_trans/trans_privileged.c.inc
+++ b/target/riscv/insn_trans/trans_privileged.c.inc
@@ -22,8 +22,6 @@ static bool trans_ecall(DisasContext *ctx, arg_ecall *a)
 {
     /* always generates U-level ECALL, fixed in do_interrupt handler */
     generate_exception(ctx, RISCV_EXCP_U_ECALL);
-    exit_tb(ctx); /* no chaining */
-    ctx->base.is_jmp = DISAS_NORETURN;
     return true;
 }
 
@@ -60,13 +58,11 @@ static bool trans_ebreak(DisasContext *ctx, arg_ebreak *a)
         post   = opcode_at(&ctx->base, post_addr);
     }
 
-    if  (pre == 0x01f01013 && ebreak == 0x00100073 && post == 0x40705013) {
+    if (pre == 0x01f01013 && ebreak == 0x00100073 && post == 0x40705013) {
         generate_exception(ctx, RISCV_EXCP_SEMIHOST);
     } else {
         generate_exception(ctx, RISCV_EXCP_BREAKPOINT);
     }
-    exit_tb(ctx); /* no chaining */
-    ctx->base.is_jmp = DISAS_NORETURN;
     return true;
 }
 
-- 
2.25.1


Re: [PATCH v2 17/23] target/riscv: Remove dead code after exception
Posted by Alistair Francis 4 years, 4 months ago
On Wed, Oct 13, 2021 at 2:35 AM Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> We have already set DISAS_NORETURN in generate_exception,
> which makes the exit_tb unreachable.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>

Alistair

> ---
>  target/riscv/insn_trans/trans_privileged.c.inc | 6 +-----
>  1 file changed, 1 insertion(+), 5 deletions(-)
>
> diff --git a/target/riscv/insn_trans/trans_privileged.c.inc b/target/riscv/insn_trans/trans_privileged.c.inc
> index 32312be202..a7afcb15ce 100644
> --- a/target/riscv/insn_trans/trans_privileged.c.inc
> +++ b/target/riscv/insn_trans/trans_privileged.c.inc
> @@ -22,8 +22,6 @@ static bool trans_ecall(DisasContext *ctx, arg_ecall *a)
>  {
>      /* always generates U-level ECALL, fixed in do_interrupt handler */
>      generate_exception(ctx, RISCV_EXCP_U_ECALL);
> -    exit_tb(ctx); /* no chaining */
> -    ctx->base.is_jmp = DISAS_NORETURN;
>      return true;
>  }
>
> @@ -60,13 +58,11 @@ static bool trans_ebreak(DisasContext *ctx, arg_ebreak *a)
>          post   = opcode_at(&ctx->base, post_addr);
>      }
>
> -    if  (pre == 0x01f01013 && ebreak == 0x00100073 && post == 0x40705013) {
> +    if (pre == 0x01f01013 && ebreak == 0x00100073 && post == 0x40705013) {
>          generate_exception(ctx, RISCV_EXCP_SEMIHOST);
>      } else {
>          generate_exception(ctx, RISCV_EXCP_BREAKPOINT);
>      }
> -    exit_tb(ctx); /* no chaining */
> -    ctx->base.is_jmp = DISAS_NORETURN;
>      return true;
>  }
>
> --
> 2.25.1
>
>