Browse Source

* AVR: patch by Christo Crause: fixes tcgavr.g_concatcopy for data with size>255, resolves #36066

git-svn-id: trunk@42977 -
florian 5 năm trước cách đây
mục cha
commit
4e93a9a6c7
1 tập tin đã thay đổi với 8 bổ sung1 xóa
  1. 8 1
      compiler/avr/cgcpu.pas

+ 8 - 1
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);