瀏覽代碼

* post/pre inc/decrement references modify obviously the base register on avr, resolves #40153

florian 2 年之前
父節點
當前提交
22f1289b2a
共有 1 個文件被更改,包括 14 次插入0 次删除
  1. 14 0
      compiler/avr/aoptcpub.pas

+ 14 - 0
compiler/avr/aoptcpub.pas

@@ -140,6 +140,20 @@ Implementation
           exit;
         end;
 
+      If (taicpu(p1).opcode=A_LD) and
+        (taicpu(p1).oper[1]^.ref^.addressmode in [AM_POSTINCREMENT,AM_PREDECREMENT]) and (taicpu(p1).oper[1]^.ref^.base=reg) then
+        begin
+          Result:=true;
+          exit;
+        end;
+
+      If (taicpu(p1).opcode=A_ST) and
+        (taicpu(p1).oper[0]^.ref^.addressmode in [AM_POSTINCREMENT,AM_PREDECREMENT]) and (taicpu(p1).oper[0]^.ref^.base=reg) then
+        begin
+          Result:=true;
+          exit;
+        end;
+
       for i:=0 to taicpu(p1).ops-1 do
         if (taicpu(p1).oper[i]^.typ=top_reg) and (taicpu(p1).oper[i]^.reg=Reg) and (taicpu(p1).spilling_get_operation_type(i) in [operand_write,operand_readwrite]) then
           begin