Browse Source

* 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 -
yury 18 years ago
parent
commit
319d92fe9a
1 changed files with 1 additions and 1 deletions
  1. 1 1
      compiler/ncgutil.pas

+ 1 - 1
compiler/ncgutil.pas

@@ -1618,7 +1618,6 @@ implementation
                       sizeleft:=currpara.paraloc[calleeside].intsize;
                       while assigned(paraloc) do
                         begin
-                          unget_para(paraloc^);
                           if (paraloc^.size=OS_NO) then
                             begin
                               { Can only be a reference that contains the rest
@@ -1636,6 +1635,7 @@ implementation
                               inc(href.offset,TCGSize2Size[paraloc^.size]);
                               dec(sizeleft,TCGSize2Size[paraloc^.size]);
                             end;
+                          unget_para(paraloc^);
                           paraloc:=paraloc^.next;
                         end;
                     end;