From 22f1289b2a1a04c81e9421ed2a1d36216f0fb73e Mon Sep 17 00:00:00 2001 From: florian Date: Fri, 17 Feb 2023 23:02:02 +0100 Subject: [PATCH] * post/pre inc/decrement references modify obviously the base register on avr, resolves #40153 --- compiler/avr/aoptcpub.pas | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/compiler/avr/aoptcpub.pas b/compiler/avr/aoptcpub.pas index 8e5aa2c1ca..17f783ea98 100644 --- a/compiler/avr/aoptcpub.pas +++ b/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