LGTM

On Sun, Nov 19, 2023 at 1:36 PM Maciej W. Rozycki <ma...@embecosm.com> wrote:
>
> For the NEED_EQ_NE_P `riscv_emit_int_compare' is documented to only emit
> EQ or NE comparisons against zero, however it does not catch incorrect
> use where a non-equality comparison has been requested and falls through
> to the general case then.  Add a safety guard to catch such a case then.
>
> Arguably the NEED_EQ_NE_P case would best be moved into a function of
> its own, but let's leave it for a separate cleanup.
>
>         gcc/
>         * config/riscv/riscv.cc (riscv_emit_int_compare): Bail out if
>         NEED_EQ_NE_P but the comparison is neither EQ nor NE.
> ---
> FWIW the structure of code here clearly shows the NEED_EQ_NE_P case has
> been bolted on as an afterthought rather than how this piece would look
> if written from scratch right away.  Let's defer any further cleanups at
> this stage of the development cycle though.
> ---
>  gcc/config/riscv/riscv.cc |    1 +
>  1 file changed, 1 insertion(+)
>
> gcc-riscv-emit-int-compare-need-eq-ne.diff
> Index: gcc/gcc/config/riscv/riscv.cc
> ===================================================================
> --- gcc.orig/gcc/config/riscv/riscv.cc
> +++ gcc/gcc/config/riscv/riscv.cc
> @@ -3779,6 +3779,7 @@ riscv_emit_int_compare (enum rtx_code *c
>           *op1 = const0_rtx;
>           return;
>         }
> +      gcc_unreachable ();
>      }
>
>    if (splittable_const_int_operand (*op1, VOIDmode))

Reply via email to