From 4e93a9a6c7ad4eac2ec416f724013dd4a0860cf2 Mon Sep 17 00:00:00 2001 From: florian Date: Thu, 12 Sep 2019 20:29:12 +0000 Subject: [PATCH] * AVR: patch by Christo Crause: fixes tcgavr.g_concatcopy for data with size>255, resolves #36066 git-svn-id: trunk@42977 - --- compiler/avr/cgcpu.pas | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/compiler/avr/cgcpu.pas b/compiler/avr/cgcpu.pas index 45ca2037d1..661c300a9d 100644 --- a/compiler/avr/cgcpu.pas +++ b/compiler/avr/cgcpu.pas @@ -2404,7 +2404,14 @@ unit cgcpu; list.concat(taicpu.op_reg_ref(GetLoad(srcref),NR_R0,srcref)); list.concat(taicpu.op_ref_reg(GetStore(dstref),dstref,NR_R0)); cg.ungetcpuregister(list,NR_R0); - list.concat(taicpu.op_reg(A_DEC,countreg)); + if tcgsize2size[countregsize] = 1 then + list.concat(taicpu.op_reg(A_DEC,countreg)) + else + begin + list.concat(taicpu.op_reg_const(A_SUBI,countreg,1)); + list.concat(taicpu.op_reg_reg(A_SBC,GetNextReg(countreg),NR_R1)); + end; + a_jmp_flags(list,F_NE,l); cg.ungetcpuregister(list,NR_R26); cg.ungetcpuregister(list,NR_R27);