aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Müllner <christoph.muellner@vrull.eu>2024-05-15 12:19:40 -0600
committerJeff Law <jlaw@ventanamicro.com>2024-05-15 15:14:24 -0600
commit1fbbae1d4ba3618a3da829a6d7e11a1606a583b3 (patch)
treec173fc77f87610ce6d8aaea1a5ca48546af884c8
parent4bf1aa1ab90dd487fadc27c86523ec3562b2d2fe (diff)
downloadgcc-1fbbae1d4ba3618a3da829a6d7e11a1606a583b3.zip
gcc-1fbbae1d4ba3618a3da829a6d7e11a1606a583b3.tar.gz
gcc-1fbbae1d4ba3618a3da829a6d7e11a1606a583b3.tar.bz2
[v2,2/2] RISC-V: strcmp expansion: Use adjust_address() for address calculation
We have an arch-independent routine to generate an address with an offset. Let's use that instead of doing the calculation in the backend. gcc/ChangeLog: * config/riscv/riscv-string.cc (emit_strcmp_scalar_load_and_compare): Use adjust_address() to calculate MEM-PLUS pattern.
-rw-r--r--gcc/config/riscv/riscv-string.cc10
1 files changed, 4 insertions, 6 deletions
diff --git a/gcc/config/riscv/riscv-string.cc b/gcc/config/riscv/riscv-string.cc
index 8f3b6f9..cbb9724 100644
--- a/gcc/config/riscv/riscv-string.cc
+++ b/gcc/config/riscv/riscv-string.cc
@@ -227,8 +227,6 @@ emit_strcmp_scalar_load_and_compare (rtx result, rtx src1, rtx src2,
rtx final_label)
{
const unsigned HOST_WIDE_INT xlen = GET_MODE_SIZE (Xmode);
- rtx src1_addr = force_reg (Pmode, XEXP (src1, 0));
- rtx src2_addr = force_reg (Pmode, XEXP (src2, 0));
unsigned HOST_WIDE_INT offset = 0;
rtx testval = gen_reg_rtx (Xmode);
@@ -246,10 +244,10 @@ emit_strcmp_scalar_load_and_compare (rtx result, rtx src1, rtx src2,
else
load_mode = Xmode;
- rtx addr1 = gen_rtx_PLUS (Pmode, src1_addr, GEN_INT (offset));
- do_load_from_addr (load_mode, data1, addr1, src1);
- rtx addr2 = gen_rtx_PLUS (Pmode, src2_addr, GEN_INT (offset));
- do_load_from_addr (load_mode, data2, addr2, src2);
+ rtx addr1 = adjust_address (src1, load_mode, offset);
+ do_load (load_mode, data1, addr1);
+ rtx addr2 = adjust_address (src2, load_mode, offset);
+ do_load (load_mode, data2, addr2);
if (cmp_bytes == 1)
{