* fixes reference handling for arm thumb and ldrh, not perfect yet

git-svn-id: trunk@28568 -
This commit is contained in:
florian 2014-08-31 18:00:10 +00:00
parent 604b277183
commit 8a7c16327c

View File

@ -4074,8 +4074,19 @@ unit cgcpu;
((op=A_LDRB) and (oppostfix=PF_None))) and
((ref.base=NR_STACK_POINTER_REG) or
(ref.index=NR_STACK_POINTER_REG) or
(abs(ref.offset)>31))
) then
(abs(ref.offset)>31)
)
) or
{ LDRH limitations }
(
(((op=A_LDR) and (oppostfix=PF_H)) or
((op=A_LDRH) and (oppostfix=PF_None))) and
((ref.base=NR_STACK_POINTER_REG) or
(ref.index=NR_STACK_POINTER_REG) or
(abs(ref.offset)>62) or
((abs(ref.offset) mod 2)<>0)
)
) then
begin
tmpreg:=getintregister(list,OS_ADDR);
a_loadaddr_ref_reg(list,ref,tmpreg);