Ver código fonte

* correct paraloc size for 3-byte records passed in the lower bits of a
register (32 bit instead of 64 bit register)

git-svn-id: trunk@30222 -

Jonas Maebe 10 anos atrás
pai
commit
cea2741339
1 arquivos alterados com 12 adições e 2 exclusões
  1. 12 2
      compiler/powerpc64/cpupara.pas

+ 12 - 2
compiler/powerpc64/cpupara.pas

@@ -640,8 +640,18 @@ implemented
         end
       else if (paracgsize in [OS_NO, OS_128, OS_S128]) then
         begin
-          paraloc^.size := OS_INT;
-          paraloc^.def := osuinttype;
+          if (paralen>4) or
+             (parashift<>0) then
+            begin
+              paraloc^.size := OS_INT;
+              paraloc^.def := osuinttype;
+            end
+          else
+            begin
+              { for 3-byte records aligned in the lower bits of register }
+              paraloc^.size := OS_32;
+              paraloc^.def := u32inttype;
+            end;
         end
       else
         begin