summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--riscv_new/compiler/riscv64/cgcpu.pas36
1 files changed, 10 insertions, 26 deletions
diff --git a/riscv_new/compiler/riscv64/cgcpu.pas b/riscv_new/compiler/riscv64/cgcpu.pas
index 31c533f971..6f028d5448 100644
--- a/riscv_new/compiler/riscv64/cgcpu.pas
+++ b/riscv_new/compiler/riscv64/cgcpu.pas
@@ -519,14 +519,6 @@ implementation
src, dst, src2, dst2: TReference;
lab: tasmlabel;
Count, count2: aint;
-
- function reference_is_reusable(const ref: treference): boolean;
- begin
- result:=(ref.base<>NR_NO) and (ref.index=NR_NO) and
- (ref.symbol=nil) and
- is_imm12(ref.offset);
- end;
-
begin
src2:=source;
fixref(list,src2);
@@ -550,24 +542,16 @@ implementation
else
begin
Count := len div 8;
- if (count<=8) and reference_is_reusable(src2) then
- src:=src2
- else
- begin
- reference_reset(src,sizeof(aint),[]);
- { load the address of src2 into src.base }
- src.base := GetAddressRegister(list);
- a_loadaddr_ref_reg(list, src2, src.base);
- end;
- if (count<=8) and reference_is_reusable(dst2) then
- dst:=dst2
- else
- begin
- reference_reset(dst,sizeof(aint),[]);
- { load the address of dst2 into dst.base }
- dst.base := GetAddressRegister(list);
- a_loadaddr_ref_reg(list, dst2, dst.base);
- end;
+ reference_reset(src,sizeof(aint),[]);
+ { load the address of src2 into src.base }
+ src.base := GetAddressRegister(list);
+ a_loadaddr_ref_reg(list, src2, src.base);
+
+ reference_reset(dst,sizeof(aint),[]);
+ { load the address of dst2 into dst.base }
+ dst.base := GetAddressRegister(list);
+ a_loadaddr_ref_reg(list, dst2, dst.base);
+
{ generate a loop }
if Count > 4 then
begin