浏览代码

Merged revisions 1307 via svnmerge from
http://[email protected]/svn/fpc/trunk

r1307 (peter)
* fixed const and reg parameter passing with alignment of 2 (go32v2/os2)

git-svn-id: branches/fixes_2_0@1529 -

peter 20 年之前
父节点
当前提交
2570669c8a
共有 1 个文件被更改,包括 8 次插入2 次删除
  1. 8 2
      compiler/i386/cgcpu.pas

+ 8 - 2
compiler/i386/cgcpu.pas

@@ -96,7 +96,10 @@ unit cgcpu;
         if use_push(cgpara) then
           begin
             cgpara.check_simple_location;
-            pushsize:=int_cgsize(cgpara.alignment);
+            if tcgsize2size[cgpara.location^.size]>cgpara.alignment then
+              pushsize:=cgpara.location^.size
+            else
+              pushsize:=int_cgsize(cgpara.alignment);
             list.concat(taicpu.op_reg(A_PUSH,tcgsize2opsize[pushsize],makeregsize(list,r,pushsize)));
           end
         else
@@ -111,7 +114,10 @@ unit cgcpu;
         if use_push(cgpara) then
           begin
             cgpara.check_simple_location;
-            pushsize:=int_cgsize(cgpara.alignment);
+            if tcgsize2size[cgpara.location^.size]>cgpara.alignment then
+              pushsize:=cgpara.location^.size
+            else
+              pushsize:=int_cgsize(cgpara.alignment);
             list.concat(taicpu.op_const(A_PUSH,tcgsize2opsize[pushsize],a));
           end
         else