瀏覽代碼

* fixed another calling convention problem on win64

git-svn-id: trunk@4593 -
florian 19 年之前
父節點
當前提交
97ce278e14
共有 1 個文件被更改,包括 9 次插入0 次删除
  1. 9 0
      compiler/x86_64/cpupara.pas

+ 9 - 0
compiler/x86_64/cpupara.pas

@@ -448,6 +448,10 @@ unit cpupara;
                           else
                             paraloc^.register:=newreg(R_INTREGISTER,paraintsupregs[intparareg],subreg);
 
+                          { matching mm register must be skipped }
+                          if target_info.system=system_x86_64_win64 then
+                            inc(mmparareg);
+
                           inc(intparareg);
                           dec(paralen,tcgsize2size[paraloc^.size]);
                         end;
@@ -465,6 +469,11 @@ unit cpupara;
                             paraloc^.size:=OS_F64
                           else
                             paraloc^.size:=paracgsize;
+
+                          { matching int register must be skipped }
+                          if target_info.system=system_x86_64_win64 then
+                            inc(intparareg);
+
                           inc(mmparareg);
                           dec(paralen,tcgsize2size[paraloc^.size]);
                         end;