瀏覽代碼

* 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 年之前
父節點
當前提交
cea2741339
共有 1 個文件被更改,包括 12 次插入2 次删除
  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