mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-12 09:29:07 +02:00
* Release register of by value parameter after making its local copy. It fixes bug when local stack location is referenced using big (>4k) PC relative offset by ARM CPU. In this case temp register is needed and wrong temp register is allocated.
git-svn-id: trunk@5488 -
This commit is contained in:
parent
c21b1478b8
commit
319d92fe9a
@ -1618,7 +1618,6 @@ implementation
|
|||||||
sizeleft:=currpara.paraloc[calleeside].intsize;
|
sizeleft:=currpara.paraloc[calleeside].intsize;
|
||||||
while assigned(paraloc) do
|
while assigned(paraloc) do
|
||||||
begin
|
begin
|
||||||
unget_para(paraloc^);
|
|
||||||
if (paraloc^.size=OS_NO) then
|
if (paraloc^.size=OS_NO) then
|
||||||
begin
|
begin
|
||||||
{ Can only be a reference that contains the rest
|
{ Can only be a reference that contains the rest
|
||||||
@ -1636,6 +1635,7 @@ implementation
|
|||||||
inc(href.offset,TCGSize2Size[paraloc^.size]);
|
inc(href.offset,TCGSize2Size[paraloc^.size]);
|
||||||
dec(sizeleft,TCGSize2Size[paraloc^.size]);
|
dec(sizeleft,TCGSize2Size[paraloc^.size]);
|
||||||
end;
|
end;
|
||||||
|
unget_para(paraloc^);
|
||||||
paraloc:=paraloc^.next;
|
paraloc:=paraloc^.next;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user