Browse Source

Fixed problem in estimation of stack size for thumb targets. Types passed by value were not handled properly.

git-svn-id: trunk@26458 -
Jeppe Johansen 11 years ago
parent
commit
123742647c
1 changed files with 8 additions and 4 deletions
  1. 8 4
      compiler/arm/cpupi.pas

+ 8 - 4
compiler/arm/cpupi.pas

@@ -111,10 +111,14 @@ unit cpupi;
             localsize:=0;
             for i:=0 to procdef.parast.SymList.Count-1 do
               if tsym(procdef.parast.SymList[i]).typ=paravarsym then
-                if is_open_string(tabstractnormalvarsym(procdef.parast.SymList[i]).vardef) then
-                  inc(localsize,256)
-                else
-                  inc(localsize,tabstractnormalvarsym(procdef.parast.SymList[i]).getsize);
+                begin
+                  if tabstractnormalvarsym(procdef.parast.SymList[i]).varspez in [vs_var,vs_out,vs_constref] then
+                    inc(localsize,4)
+                  else if is_open_string(tabstractnormalvarsym(procdef.parast.SymList[i]).vardef) then
+                    inc(localsize,256)
+                  else
+                    inc(localsize,tabstractnormalvarsym(procdef.parast.SymList[i]).getsize);
+                end;
 
             inc(stackframesize,localsize);