Browse Source

* fixed safecall calling convention on x86_64

git-svn-id: trunk@3442 -
florian 19 years ago
parent
commit
79b8d66212
1 changed files with 12 additions and 0 deletions
  1. 12 0
      compiler/x86_64/cpupara.pas

+ 12 - 0
compiler/x86_64/cpupara.pas

@@ -41,6 +41,7 @@ unit cpupara;
        public
           function param_use_paraloc(const cgpara:tcgpara):boolean;override;
           function push_addr_param(varspez:tvarspez;def : tdef;calloption : tproccalloption) : boolean;override;
+          function ret_in_param(def : tdef;calloption : tproccalloption) : boolean;override;
           procedure getintparaloc(calloption : tproccalloption; nr : longint;var cgpara:TCGPara);override;
           function get_volatile_registers_int(calloption : tproccalloption):tcpuregisterset;override;
           function get_volatile_registers_mm(calloption : tproccalloption):tcpuregisterset;override;
@@ -146,6 +147,17 @@ unit cpupara;
       end;
 
 
+    function tx86_64paramanager.ret_in_param(def : tdef;calloption : tproccalloption) : boolean;
+      var
+        size: longint;
+      begin
+        if (target_info.system=system_x86_64_win64) and (calloption=pocall_safecall) then
+          result:=true
+        else
+          result:=inherited ret_in_param(def,calloption);
+      end;
+
+
     function tx86_64paramanager.param_use_paraloc(const cgpara:tcgpara):boolean;
       var
         paraloc : pcgparalocation;