riscv_vector::expand_block_move contains a gen_rtx_NE that uses
uninitialized reg rtx `end`. It looks like `length_rtx` was supposed to
be used here.
gcc/ChangeLog:
* config/riscv/riscv-string.cc (expand_block_move): Replace
`end` with `length_rtx` in gen_rtx_NE.
---
gcc/config/riscv/riscv-string.cc | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/gcc/config/riscv/riscv-string.cc b/gcc/config/riscv/riscv-string.cc
index 0c5ffd7d861..0f1353baba3 100644
--- a/gcc/config/riscv/riscv-string.cc
+++ b/gcc/config/riscv/riscv-string.cc
@@ -1078,7 +1078,6 @@ expand_block_move (rtx dst_in, rtx src_in, rtx length_in)
bool need_loop = true;
bool size_p = optimize_function_for_size_p (cfun);
rtx src, dst;
- rtx end = gen_reg_rtx (Pmode);
rtx vec;
rtx length_rtx = length_in;
@@ -1245,7 +1244,7 @@ expand_block_move (rtx dst_in, rtx src_in, rtx length_in)
emit_insn (gen_rtx_SET (length_rtx, gen_rtx_MINUS (Pmode, length_rtx,
cnt)));
/* Emit the loop condition. */
- rtx test = gen_rtx_NE (VOIDmode, end, const0_rtx);
+ rtx test = gen_rtx_NE (VOIDmode, length_rtx, const0_rtx);
emit_jump_insn (gen_cbranch4 (Pmode, test, length_rtx, const0_rtx,
label));
emit_insn (gen_nop ());
}
--
2.43.0